网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月02日漏签0天
c语言吧 关注:801,694贴子:4,374,977
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 首页 上一页 1 2 3
  • 119回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

回复:【随机更新】经常问的问题

  • 只看楼主
  • 收藏

  • 回复
  • 炎流天阙
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好帖


  • Sunchy321
  • 圆の帝球
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
6. 优先级以及结合性
它们的作用是什么?
它们的作用是确定表达式的含义,例如:
1+2*3等价于1+(2*3)而不是(1+2)*3,这是优先级的作用。
2*3/4等价于(2*3)/4而不是2*(3/4),这是结合性的作用。
【它们不干涉求值顺序】,例如x || (y && z)的求值顺序依然是先x后(y && z),【这是||运算符本身的性质决定的】。
再比如,a = ++i中,“增加i的值”这个效果(副作用)并不一定是什么时候发生,甚至也不一定在a的值改变之前发生,也就是说,【前缀++较高的优先级不影响副作用发生的时机,它的“表达式的值是操作数自增以后的值”的含义(语义)也与i值的改变无关】。
优先级都有哪些?
由于“优先级”这个概念没有在标准中出现,所以这方面主要靠观察语法。不幸的是C这方面并没有多么直截了当。
1. 起强制作用的括号,即(a+b)*c,而不是a()中的括号,个人认为不应放进优先级列表中(甚至,它不是一种运算符)。
2. 后缀的运算符优先级比前缀的高(个人认为,它们属于不同类型的运算符),包括“函数调用运算符”,“后缀自增运算符”,“后缀自减运算符”。【注意,++i与i++中的运算符是两种运算符。】
3. 在C语法中的postfix-expression中,不知为何混入了复合字面量(C++的更多)。当然它是要排除的。
4. unary-expression中有独特的地方:前缀++的操作数必须是一个unary-expression,而!的操作数是cast-expression,也就是说,++(int)i的合法性在语法上就被排除了。不过个人认为,把前缀++,!以及类型转换运算符放在同一个优先级并没有什么致命的危害。
5. 结合性没什么好说的。


2026-01-02 21:08:08
广告
不感兴趣
开通SVIP免广告
  • quailty
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
13级大神


  • 心中语
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
嗯嗯


  • Sunchy321
  • 圆の帝球
    16
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
8. main()长啥样?
先贴个帝球的帖子:
找不着了。。先搁置。
接下来是C99的内容:
5.1.2.2.1 Program startup
1 The function called at program startup is named main. The implementation declares noprototype for this function. It shall be defined with a return type of int and with no parameters:
int main(void) { /* ... */ }
or with two parameters (referred to here as argc and argv, though any names may beused, as they are local to the function in which they are declared):
int main(int argc, char *argv[]) { /* ... */ }
or equivalent;9) or in some other implementation-defined manner.
标准允许的(具有可移植性)的是这两种,但也允许其它的形式。
不过这些形式,包括void main()、void main(void)、int main(int argc, char** argv, char**envp)、int main()(它实际上和int main(void)声明了相同的函数,但是它没有使用原型)甚至char main(void)都是不推荐的。这么使用没有益处。
C++则有所不同:(C++11)
3.6 Start and termination [basic.start]
3.6.1 Main function [basic.start.main]
1 A program shall contain a global function called main, which is the designated start of the program. It is implementation-defined whether a program in a freestanding environment is required to define a main function. [ Note: In a freestanding environment, start-up and termination is implementation-defined; startup contains the execution of constructors for objects of namespace scope with static storage duration; termination contains the execution of destructors for objects with static storage duration. — end note ]
2 An implementation shall not predefine the main function. This function shall not be overloaded. It shall have a return type of type int, but otherwise its type is implementation-defined. All implementations shall allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* ar gv[]) { /* ... */ }


同样要求实现必须允许这两种形式,但是额外增加了一个限制:main必须返回int。这就是说:C++中void main()是不合法的(当然它是合法的VC++代码,这另当别论。)
另外存在一个例外:在freestandind env中程序的开始和结束是实现定义的,也就是说main的形式,甚至是否存在main都是无所谓的。按照我的理解,这大致相当于在没有操作系统情况下的程序。。
挖坟大法好。


  • 疯知翊
  • 大能力者
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我随便写的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 1 2 3
  • 119回复贴,共3页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示