首页 > 编程语言 > 详细

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

时间:2018-10-18 21:49:31      阅读:140      评论:0      收藏:0      [点我收藏+]
  • 未定义行为:语言标准没有规定,编译器自行决定的行为,在不同的编译器上有时会有不同的结果。
  • 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?

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

原文:https://www.cnblogs.com/jhy16193335/p/9812953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!