请考虑以下代码:
#include <stdio.h>
int aaa(char *f, ...)
{
putchar(*f);
return 0;
}
int main(void)
{
aaa("abc");
aaa("%dabc", 3);
aaa(("abc"));
aaa(("%dabc", 3));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么以下几行:
aaa("abc");
aaa("%dabc", 3);
aaa(("abc"));
Run Code Online (Sandbox Code Playgroud)
运行没有错误,但第四行(见下文):
aaa(("%dabc", 3));
Run Code Online (Sandbox Code Playgroud)
生成以下错误:
main.c:15:2:警告:传递'aaa'的参数1使得整数指针没有强制转换
main.c:3:5:注意:预期'char*'但参数类型为`int'
Som*_*ude 12
该声明
aaa(("%dabc", 3));
Run Code Online (Sandbox Code Playgroud)
aaa使用("%dabc", 3)返回值的参数调用该函数3.
查找逗号运算符以获取更多信息.