编译错误求助:第8行提示')'前需primary expression,求问题原因与解决
编译错误解析:Expected primary expression before token ")"
嘿,作为编程新手遇到这种编译错误太正常了,别慌!我来帮你把问题拆明白:
错误含义是什么?
这个错误的直白意思是:编译器在碰到右括号)的时候,它前面没有找到合法的基础表达式(也就是所谓的“primary expression”,比如变量、数值、合法的运算式这类),导致语法解析卡壳了。简单说就是你写的代码里,这个括号前面的部分语法不对,编译器看不懂。
你的代码问题出在哪?
看你代码里的三元运算符那一行:
((a||b||c||)!=0&&(a+b)>c&&(b+c)>a&&(a+c)>b)?printf("Triangle"):printf("NOT a TRIANGLE");
这里有两个关键问题:
- 多余的逻辑或运算符:
a||b||c||最后多了一个||——逻辑或||是双目运算符,必须左右两边都有操作数(比如a||b是合法的),但你最后这个||后面啥都没有就直接接了),编译器看到这里就懵了:“你这个||要和谁做运算?”,这就是触发错误的直接原因。 - 逻辑判断逻辑错误:就算去掉多余的
||,(a||b||c)!=0也不是你想要的逻辑——你本来是想判断三个边长都是正数对吧?但||是“只要有一个为真就为真”,比如a是正数,b和c是负数,a||b||c也会是真,这不符合三角形边长的要求。正确的应该是用逻辑与&&,判断a>0 && b>0 && c>0,确保三个边长都是正数。
修正后的代码
把错误的部分改好后,代码应该是这样的:
float a,b,c; printf("side1="); scanf("%f",&a); printf("side2="); scanf("%f",&b); printf("side3="); scanf("%f",&c); // 修正了逻辑判断的语法和逻辑问题 (a>0 && b>0 && c>0 && (a+b)>c && (b+c)>a && (a+c)>b) ? printf("Triangle") : printf("NOT a TRIANGLE"); getch();
内容的提问来源于stack exchange,提问作者Nowshin L Chowdhury
相关产品推荐
相关产品推荐

