我必须有语法问题,但我无法理解这意味着什么 - 我用Google搜索,但我不明白这个问题的原因。请告诉我函数语法
有什么问题这是错误行:
else sequence= (Bnum < Anum) ? sequence=Bnum : sequence=Anum;
这是功能
int reduction(int Knum)
{
int sequence=8, Anum=0, Bnum=0;
printf("enter a sequence,to stop print (-1)\n");
while(sequence!=-1)
{
Anum = sequence;
scanf("%d",&sequence);
Bnum = sequence;
if (Anum+Bnum<8)
return 1;
else
sequence= (Bnum < Anum) ? sequence=Bnum : sequence=Anum;
}
return 0;
}
答案 0 :(得分:7)
以下
sequence= (Bnum < Anum) ? sequence=Bnum : sequence=Anum ;
应写成:
sequence= (Bnum < Anum) ? Bnum : Anum ;
我确定您将代码编译为C
程序,而不是C++
程序,因为在C ++中您编写的内容不会导致编译错误,虽然它在C中是一个错误。这是C和C ++不同的一个例子!
关于错误的解释,请在此处阅读我的帖子:
答案 1 :(得分:5)
else sequence = (Bnum < Anum) ? Bnum : Anum;
您不需要?:运算符中的额外赋值。
答案 2 :(得分:4)
您需要了解?:
和=
运算符的优先级。你希望
sequence = (Bnum < Anum) ? sequence=Bnum : sequence=Anum;
(即使因为太多同时分配到序列的原因,这是错误的)被解析为
sequence = (Bnum < Anum) ? (sequence=Bnum) : (sequence=Anum);
但是语言规则(在C中)是如果你想要解析,你必须自己使用括号。如果没有明确的括号,运算符的优先级意味着表达式等同于
sequence = ((Bnum < Anum) ? (sequence=Bnum) : sequence) = Anum;
在C中没有意义,因此语法错误。
但更重要的是,您需要考虑要存储到sequence
中的值。为什么sequence = ...
在此声明中出现过多次?另请参阅my answer to this question。
答案 3 :(得分:3)
答案 4 :(得分:1)
在C#中,语法为sequence = (BNum < ANum) ? BNum : Anum
,其内容如下:
if (BNum < ANum)
{
sequence = BNum;
}
else
{
sequence = ANum;
}