如果变量是char或int,则算术运算不同

时间:2016-07-02 13:05:12

标签: c

我有以下代码

#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值发生变化的原因是什么?

1 个答案:

答案 0 :(得分:1)

你在做什么是未定义的行为。如果已定义(通过规范或实现),无论您使用何种数据类型,都会得到相同的结果。由于优化,该值也会发生变化。