奇怪的C语言语法--谁给解释一下。 欢迎交流,QQ:844367886

[复制链接]
查看11 | 回复4 | 2012-3-5 14:01:04 | 显示全部楼层 |阅读模式
这个是标准问题 C标准不保证函数参数的求值顺序即printf函数里究竟是第一个参数先求值还是第二个参数先求值在标准里边是未确定行为其值依赖于具体的实现在gcc里是这个顺序也许换一个编译器就是另外一种顺序
对于++后缀 虽然其是先使用后+1 但标准只保证其在下一条语句之前+1并不保证在下一条语句执行之前变量自增的顺序 而且顺便说一句对于这种++++++++的讨论不仅浪费时间 而且毫无意义...
回复

使用道具 举报

千问 | 2012-3-5 14:01:04 | 显示全部楼层
很蛋疼的语句,也只有无聊的人才会写这种代码,没意思不同的编译器,得出的结果可能不同,因为他们的编译原理有差别你看一下汇编代码,就知道了同时问你一个语句,你知道他是几吗?int a=1;int b=a+++++a--;b是几啊?...
回复

使用道具 举报

千问 | 2012-3-5 14:01:04 | 显示全部楼层
int a=0++就是自身加1a++是先取值,再做加法。(此时输出a为0。再输出以后a的值就是1了。)然后又执行了++a,这个是先自加,再取值。(先做自加 ,上面a的值已经变成1了。自加后是2,然后取值为2,所以输出为2.)...
回复

使用道具 举报

千问 | 2012-3-5 14:01:04 | 显示全部楼层
++ 运算和参数计算的顺序在C标准中没有明确定义,因此各个编译器的计算结果会有所不同。你可以当做 Hack 来了解C语言和制定编译器,但是在实际项目中要坚决避免,这应该是种语言陷阱吧。从你给出的显示结果来看, 该编译器应该是 前++运算优先吧。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行