C预处理器 – 令牌粘贴 – 令人困惑的结果.这是为什么?
发布时间:2020-12-16 06:47:12 所属栏目:百科 来源:网络整理
导读:我以为这个程序会打印值-12–2 = -10.当我运行它时,它打印0. 我想不通为什么?任何提示? #include stdio.h #define ALPHA(x,y) x##2-y int main(void) { int i = -1; int i2 = -2; printf("%d",ALPHA(i,i2)); return 0;} 解决方法 预处理阶段在任何编译之前
我以为这个程序会打印值-12–2 = -10.当我运行它时,它打印0.
我想不通为什么?任何提示? #include <stdio.h> #define ALPHA(x,y) x##2-y int main(void) { int i = -1; int i2 = -2; printf("%d",ALPHA(i,i2)); return 0; } 解决方法
预处理阶段在任何编译之前完成,并在文本上完成.它没有变量或类型的概念(即编译阶段),更不用说实际值(运行时).
那么,你在做的是: 1) ALPHA(i,i2) 2) i##2-i2 3) i2-i2 因此,您最终得到的printf(“%d”,i2-i2)打印为零. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |