- 未定义行为:语言标准没有规定,编译器自行决定的行为,在不同的编译器上有时会有不同的结果。
- 1:
int i=0;
i=i++;
-
我们知道i++会返回i之后再自增,那么程序运行完i为多少?
-
解释一:
i=i;i++;
先赋值再自增。 -
解释二:
i++;i=i;
先自增再赋值。 -
2:
int i=0,j=0;
i=i+++j;
-
我们发现i和j中间有3个加号,现在也有两种解释。
-
解释一:
i=(i++)+j
,i先加上j再做自增。 -
解释二:
i=i+(++j)
,j先做自增再加上i。 -
3:
int i=0;
printf("%d %d",++i,++i);
-
这是一个关于输出顺序的问题究竟输出的是,1,2;2,1,还是其他的?
-
4:
const int a = 1;
int *b = (int*)&a;
*b = 2;
- 此时输出a,a的值为多少?1还是2?
原文链接: https://www.cnblogs.com/jhy16193335/p/9812953.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/283362
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!