鸿氏 发表于 2021-12-20 17:00

c语言调试bug


printf语句里面++a和a++谁先执行呀
我的理解是:输出“2,2”

E式丶男孩 发表于 2021-12-20 17:11

一个是先加后用,一个是先用后加
int a=1;
// 此时先执行a+1,然后再输出
printf("%d",++a);

int a=1;
// 此时先执行输出a,再执行a+1
printf("%d",a++);

苏紫方璇 发表于 2021-12-20 17:19

本帖最后由 苏紫方璇 于 2021-12-20 17:29 编辑

只能说非考试不要用这种,不同的编译器会给出不同的结果
例如
int a = 1;
printf("%d,%d", ++a, a++);
vs结果是2,1
gcc结果是3,1

常驻人士 发表于 2021-12-20 17:49

我很赞同

ZHAO5210 发表于 2021-12-20 20:02

我也刚学,这种最好不要用,易错不利于理解!

wihn 发表于 2021-12-20 20:23

这是未定义行为,结果是不确定的,建议还是不要这么不确定地写。
页: [1]
查看完整版本: c语言调试bug