【发布时间】:2010-06-05 22:59:28
【问题描述】:
我有这个sn-p的代码
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
为什么我无法收到我的Hello 提前谢谢!
编译器究竟如何比较if(str[0] == 1)?
【问题讨论】:
标签: c++ c comparison ascii
我有这个sn-p的代码
char *str = “123”;
if(str[0] == 1) printf("Hello\n");
为什么我无法收到我的Hello 提前谢谢!
编译器究竟如何比较if(str[0] == 1)?
【问题讨论】:
标签: c++ c comparison ascii
你想这样做:
if (str[0] == '1') ...
不同之处在于您将str[0] 与数字 1 进行比较,而我上面的代码将str[0] 与字符 '1' 进行比较(具有ASCII 值 49)。并非所有编程语言都以这种方式交替处理字符和数字,但 C 可以。
查看ASCII,了解有关计算机如何将数字映射到字符的更多信息。
【讨论】:
这是因为您将 str 的第一个字符与数字 1 进行比较。'1' 的实际字符代码是 49。因此,其中任何一个都可以:
if (str[0] == '1')
if (str[0] == 49)
请记住,1 与 '1' 不同。第一个是数字,第二个是字符。如果你想了解更多,你应该看看这里:http://en.wikipedia.org/wiki/Character_encoding
【讨论】:
*str 是指针类型 char var...存储字符串的基地址 .str[0] 保存第一个 char ...即 1 也是一个 char ..so,i 它表示是 '1'...
试试这个:
if(str[0] == '1')
printf("Hello \n");
【讨论】:
你是在比较一个 char 和一个 int,它应该是
if(str[0] == '1')
【讨论】:
尝试使用if(str[0] == '1') 而不是与1 进行比较,这在C 中意味着一且为真:)
【讨论】:
使用这个 ==>
if(str[0] == '1')
printf("Hello \n");
【讨论】:
你需要问
*str = “123”; if(str[0] == '1') printf("Hello\n");
看到 1 附近的那些单引号了吗?您需要比较一个字符,而您正在比较一个整数。
【讨论】:
试试这个.....
if(str[0] == '1')
printf("Hello \n");
【讨论】: