You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译错误求助:第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");

这里有两个关键问题:

  1. 多余的逻辑或运算符:a||b||c||最后多了一个||——逻辑或||是双目运算符,必须左右两边都有操作数(比如a||b是合法的),但你最后这个||后面啥都没有就直接接了),编译器看到这里就懵了:“你这个||要和谁做运算?”,这就是触发错误的直接原因。
  2. 逻辑判断逻辑错误:就算去掉多余的||,(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:43:27