关于C的简单问题

时间:2010-06-05 22:59:29

标签: c++ c comparison ascii

我有这段代码

char    *str = “123”;
if(str[0] == 1) printf("Hello\n");

为什么我不能提前收到Hello谢谢! 编译器如何完成此比较if(str[0] == 1)

9 个答案:

答案 0 :(得分:14)

你想这样做:

if (str[0] == '1') ...

区别在于您将str[0]数字 1进行比较,而我上面的代码是将str[0]字符进行比较 {{ 1}}(其ASCII值为49)。并非所有编程语言都以这种方式互换地处理字符和数字,但C确实如此。

有关计算机如何将数字映射到字符的详细信息,请查看ASCII

答案 1 :(得分:8)

首先,正确的方法是:

if(str[0] == '1')

或者:

if(str[0] == 49)


其次,您必须注意1'1'

之间的区别
  • 1是一个整数值......
  • '1'ASCII等于49
  • 的角色

这意味着: ('1'==1)是假的!!

然而('1'==49)是真的!!

当您在C / C ++中编写'1'时,它会自动转换为相应的ASCII 49,这就是'1'在C / C ++中实际表示的方式

答案 2 :(得分:2)

这是因为您要将str的第一个字符与数字1进行比较。'1'的实际字符代码为49.因此,其中任何一个都可以使用:

if (str[0] == '1')

if (str[0] == 49)

请注意,1'1'不同。第一个是数字,第二个是字符。如果您想了解更多相关信息,请查看此处:http://en.wikipedia.org/wiki/Character_encoding

答案 3 :(得分:2)

* str是一个指针类型char var ...存储字符串的基地址.str [0]保存第一个char ...即1,它也是一个char ..so,我用它表示与是' 1' ...

试试这个:

if(str[0] == '1')
    printf("Hello \n");

答案 4 :(得分:1)

你要将char与int进行比较,它应该是

if(str[0] == '1')

答案 5 :(得分:1)

你需要问

* str =“123”; if(str [0] =='1')printf(“Hello \ n”);

查看1左右的单引号?您需要比较一个字符,并且您正在比较一个整数。

答案 6 :(得分:1)

尝试使用if(str[0] == '1')而不是与1进行比较,这意味着什么在C中是真的:)

答案 7 :(得分:1)

使用此==>

if(str[0] == '1')
    printf("Hello \n");

答案 8 :(得分:1)

尝试这个......

if(str[0] == '1')
    printf("Hello \n");
相关问题