C语言带指针参数的函数中?与:符号的作用是什么
C语言条件运算符
?:作用说明 你代码中出现的?和:组合是C语言内置的条件运算符,也常被叫做三目运算符,是C语言中唯一需要三个操作数参与运算的运算符,基础语法为:
条件判断表达式 ? 表达式1 : 表达式2
执行逻辑
运算时会先计算条件判断表达式的结果:
- 如果结果为真(非0),整个三目运算符的返回值就是
表达式1的计算结果 - 如果结果为假(等于0),整个三目运算符的返回值就是
表达式2的计算结果
对应代码的具体含义
你给出的赋值语句:
middle = (counter % 2 == 0) ? (counter / 2) : ((counter - 1) / 2);
完全等价于下面的if-else分支写法:
if (counter % 2 == 0) { // 字符串长度为偶数的情况 middle = counter / 2; } else { // 字符串长度为奇数的情况 middle = (counter - 1) / 2; }
这里的counter是提前计算出的待反转字符串的总长度,计算middle的作用是确定字符交换的次数:反转字符串只需要把前半段和后半段的对称位置字符交换即可,奇数长度的字符串中间的字符不需要变动,所以通过三目运算符区分奇偶长度的计算逻辑,避免多余的交换操作。
使用三目运算符的原因
相比if-else分支,对于这种仅做条件赋值的简单分支逻辑,用三目运算符可以把代码压缩到一行完成,语法更简洁紧凑,可读性也更高。
内容的提问来源于stack exchange,提问作者NoahVerner
相关产品推荐
相关产品推荐

