#include <stdio.h>
#define a (1,2,3)
#define b {1,2,3}
int main()
{
unsigned int c = a;
unsigned int d = b;
printf("%d\n",c);
printf("%d\n",d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的C代码将打印输出为3和1.
但是,如何#define a (1,2,3)和#define b {1,2,3}采取= 3,B = 1不生成警告,以及如何()和{}被赋予不同的值?
请记住,预处理器只是替换宏.因此,在您的情况下,您的代码将转换为:
#include <stdio.h>
int main()
{
unsigned int c = (1,2,3);
unsigned int d = {1,2,3};
printf("%d\n",c);
printf("%d\n",d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,您从,运算符获得结果,因此c将等于3.但在第二种情况下,您获得了初始化列表的第一个成员d,因此您将得到1结果.
如果将代码编译为,则第二行会产生错误c++.但似乎你可以编译这段代码c.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |