gpt4 book ai didi

c - 为什么三元运算可能未定义

转载 作者:行者123 更新时间:2023-12-03 23:00:01 26 4
gpt4 key购买 nike

使用 GNU/GCC
使用此代码:

static uint8_t write_idx=0;
write_idx = write_idx==127 ? 0 : ++write_idx;
我收到此警告:
warning: operation on 'write_idx' may be undefined [-Wsequence-point]
你知道是什么产生了这个警告吗?
编辑 :
write_idx = write_idx==127 ? 0 : write_idx+1;
相同的行为但没有警告谢谢@pmg

最佳答案

这可以简化为:

write_idx = ++write_idx;
编译器警告,因为有两个地方写入 write_idx没有序列点。这意味着标准没有定义应该发生什么。
也许你不知道 ++预增量运算符修改变量,你想写这个:
write_idx = write_idx==127 ? 0 : write_idx + 1;

关于c - 为什么三元运算可能未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66476850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com