【C++】C++未定义行为

  • 未定义行为:语言标准没有规定,编译器自行决定的行为,在不同的编译器上有时会有不同的结果。
  • 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】免费获取数百本计算机经典书籍

    【C++】C++未定义行为

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/283362

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午7:03
下一篇 2023年2月15日 上午7:04

相关推荐