嘿伙计们我刚刚开始上c级课程,我有一个关于比较C中ASCII值的问题。
我们说我有#34;你好"我想检查一下" h"在ASCII表中匹配104,通常它会。所以我使用下面的代码来做到这一点,虽然我似乎发现这种方法不是很有效。所以我想知道是否还有其他方法。
char word [] = "hello";
if (("%d", word[0]) == 104) puts("Yay");
对不起,如果这是一个愚蠢的问题,但在我眼中看起来并没有那么高效。
非常感谢!
编辑:我发现效率低下的部分是:
("%d", word[0])
答案 0 :(得分:4)
您的("%d", word[0])
看起来像是printf
来自printf
的电话。但是既然你没有调用函数,那就完全没有了。它只是一个逗号运算符,它计算左参数("%d"
),抛出结果,并使用正确的参数。
"%d"
是一个没有副作用的表达式,所以评估它什么都不做。
您的测试可以缩短为if(word[0] == 104)
,它可以做同样的事情。或者甚至更好,将其缩短为if(word[0] == 'h')
,但仍然相同但可读。
答案 1 :(得分:2)
您可以直接在C中比较char
和int
类型,因此以下代码:
char word[] = "hello";
if(word[0] == 104) puts("Yay");
如果等同于您的代码段。
答案 2 :(得分:0)
char word [] = "hello";
if (("%d", word[0]) == 104) puts("Yay");
等效代码为:
if('h' == 104) puts("Yay");
最终改造:
puts("Yay");