码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-10-18 22:06:17      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:一个   自增   const   运行   关于   定义   pre   编译   现在   

  • 未定义行为:语言标准没有规定,编译器自行决定的行为,在不同的编译器上有时会有不同的结果。
  • 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++未定义行为

标签:一个   自增   const   运行   关于   定义   pre   编译   现在   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!