jiayunsen 发表于 2019-10-14 13:12

C语言#define有问

#define SQUARE(X) X*X
void main(void){
   printf("Square=%d,SQUARE(10+2));


这个程序的执行结果为什么是32?
解析说10+2*10+2=32。很疑惑为啥是这样

我心她有丶 发表于 2019-10-14 13:24

20+12不就32

我心她有丶 发表于 2019-10-14 13:27

SQUARE((10+2))要算12*12要这样不然不会给你先算10+2的    就会变成10+2*10+2不就先算乘后算加吗

苏紫方璇 发表于 2019-10-14 13:34

define就是文本替换,程序会按你写的先替换,然后在运算出数值

coolcalf 发表于 2019-10-14 13:51

你这个程序还能有结果?一堆全角字符。。。

buerse 发表于 2019-11-11 22:59

define 是替换 不是函数那种调用
X* X用10+2 替换X就成了10+2*10+2=32
你可以试试下面这个
#define SQUARE(X) (X)*(X)
页: [1]
查看完整版本: C语言#define有问