首页 > 解决方案 > C定义方法

问题描述

#define x 10 + 5
int main(){
    int a = x*x;
    printf("%d",a);
}

有人可以解释这些代码之间的区别吗?第一个输出是 65,第二个是 225:

 #define x 15
    int main(){
        int a = x*x;
        printf("%d",a);
    }

标签: c

解决方案


一切都与数学和 C 中运算符的优先级有关。
在第一种情况下,被x替换为,等于 65。 正如评论中所建议的,您应该使用括号来避免这个问题。10 + 5x*x10 + 5 * 10 + 5

#define x (10 + 5)
int main(){
    int a = x*x;
    printf("%d",a);
}

推荐阅读