gpt4 book ai didi

c - 'u' 和整数有什么用

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:18 25 4
gpt4 key购买 nike

此处的代码用于检查输入是否为“x”。 23u是什么意思,为什么不能直接写23呢。

# define IS_X(a) (((unsigned)a | 32) - 97 == 23u)

最佳答案

正如 chux 和 Jonathan Leffler 所指出的,((unsigned)a | 32) - 97 的结果是无符号的。程序员可能正在使用具有非常严格警告级别的编译器,该编译器提示混合无符号和有符号值的比较。为带有 u 后缀的第二个操作数 23 强制使用无符号类型可能会消除此警告。

这个宏肯定有问题:a 应该在扩展中加括号:

#define IS_X(a) (((unsigned)(a) | 32) - 97 == 23u)

宏可以写成 ((a) == 'x' || (a) == 'X') 但是 a 会被计算两次大多数情况下,程序员希望避免。

因为这个宏只适用于 ASCII,我想知道为什么没有使用这个更简单的替代方法:

#define IS_X(a)  (((a) | 32) == 'x')

关于c - 'u' 和整数有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52431757/

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