怎么去掉这个警告?warning: suggest parentheses around arithmetic in operand of '^'

麦壳饼 2016-05-09 01:45:18
struct tm *rtc_time;

time_t t = time(NULL);
rtc_time = localtime(&t);
rtc_time->tm_year += 1900;
rtc_time->tm_yday += 1;
rtc_time->tm_mon += 1;
int val = (((rtc_time->tm_year) ^ (rtc_time->tm_mday) + ((rtc_time->tm_yday + rtc_time->tm_hour + 1) ^ (rtc_time->tm_wday + 1))) * rtc_time->tm_hour) / rtc_time->tm_yday * 100;
val = val + (rtc_time->tm_mon ) ^ (rtc_time->tm_wday +1)+ rtc_time->tm_hour / rtc_time->tm_mday * 100;

warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
...全文
2775 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang0635 2016-05-09
  • 打赏
  • 举报
回复 1
二元的位运算符比加减运算符的优先级低 而有时我们想当然认为位运算优先级要高一些的 所以 b | c + d 其实是 b | (c + d) 而不是 (b | c) + d 有人就吵起来了 为了避免这种无谓的争吵 在有二元位运算符号(& | ^)和算术运算符号的表达式中 好一些的编译器就善意的提醒我们 要我们明确说明到底是怎么个结合法
galiniur0u 2016-05-09
  • 打赏
  • 举报
回复
((rtc_time->tm_year) ^ (rtc_time->tm_mday))报错信息提示楼主用括号将^操作符用括号括起来。
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
paschen 2016-05-09
  • 打赏
  • 举报
回复
C/C++里的^是异或运算符,而不是表示几次方 要计算幂用pow函数

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧