以下语句产生编译时错误。
int a=6/2(1+2);
有人可以解释为什么编译器会生成错误。
答案 0 :(得分:11)
您遗漏了一个数学符号,例如+
,-
,*
,/
。
您可能需要6/(2*(1+2))
或(6/2)*(1+2)
。
如果您退出注销,C会将其解释为函数调用,就像通常的函数printf("stuff")
一样(通过不带数学运算符的左括号表示)。因此,它认为2(1+2)
使用参数2
调用函数1+2
。
答案 1 :(得分:2)
您不能跳过乘法运算符。试试int a=6/2*(1+2);
答案 2 :(得分:1)
你必须做
int a = 6/2*(1+2);
否则它会尝试将2解释为函数,如int a = 2(argument);
答案 3 :(得分:0)
2
和(1 + 2)
之间没有任何操作。如果你想要成倍增加,你必须让C知道:编程语法通常都是严格的。
正确的语法:
int a = 6 / 2 * (1 + 2);