我有以下代码
#include <stdio.h>
int main() {
char y=3, res=0;
res = ( (++y) * (++y) );
printf("res=%d y=%d \n", res, y);
return 0;
}
结果是:
res=20 y=5
现在,当我将变量更改为int
时,它会给出不同的结果
#include <stdio.h>
int main() {
int y=3, res=0;
res = ( (++y) * (++y) );
printf("res=%d y=%d \n", res, y);
return 0;
}
结果是:
res=25 y=5
使res
值发生变化的原因是什么?
答案 0 :(得分:1)
你在做什么是未定义的行为。如果已定义(通过规范或实现),无论您使用何种数据类型,都会得到相同的结果。由于优化,该值也会发生变化。