SylviaMiller 2020-03-17 15:07 采纳率: 0%
浏览 309

这个语句的两个括号的位置为什么是在这里?

一个比较简单的程序(来源Cprimerplus P197 程序7.8)
/* paint.c -- 使用条件运算符 */
#include
#define COVERAGE 350//每罐油漆可刷的面积(单位:平方英尺)
int main()
{

int sq_feet;
int cans;
printf("Enter number of square feet to be painted:\n");
while(scanf("%d",&sq_feet)==1)
{
    cans=sq_feet/COVERAGE;
    cans+=((sq_feet%COVERAGE==0))?0:1;//这一行的括号
    printf("You need %d %s of paint.\n",cans,cans==1?"can":"cans");
    printf("Enter next value (q to quit):\n");
}
return 0;

}

问题:
在cans+=((sq_feet%COVERAGE==0))?0:1;这一行,
为什么这两个括号是在这里的,因为我自己写的是
cans+=((sq_feet%COVERAGE)==0)?0:1;
这两种写法对结果是没有影响的,但是括号位置不一样可能意味着逻辑思维不一样,我想问清楚这个问题,以免以后秉着错误的思维写更大的程序。

  • 写回答

1条回答 默认 最新

  • 胖狗子修行之路 2020-03-17 16:21
    关注

    ((sq_feet%COVERAGE==0)) 和 ((sq_feet%COVERAGE)==0) 两种写法其实也就是 (sq_feet%COVERAGE==0) 和 (sq_feet%COVERAGE)==0 的对比。
    根据c++的运算符优先级,% 优先级本来就比 == 高,所以"(sq_feet%COVERAGE==0)" == "(sq_feet%COVERAGE)==0"。
    至于逻辑思维,我的理解是(sq_feet%COVERAGE==0) 和 ((sq_feet%COVERAGE)==0) 都可以,第一种简洁一点;第二种更好理解一点,也是防止bug出现(自己规定运算顺序)。 至于为什么两个括号我也不太清除其含义了

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料