字符作为C编程语言中的整数

时间:2013-09-18 11:05:59

标签: c compiler-construction

可以将字符分类为C语言中的整数。

我正在使用词法分析器进行讨论。我正在使用C语言构建扫描程序。

7 个答案:

答案 0 :(得分:1)

您可以这样做:

const char str[] = "Hello world";
char c = 'H';

// And use any of these:
int chr = 'H'; // chr = 0x48
chr = c; // chr = 0x48
chr = str[0]; // chr = 0x48

你总是会在0x48中获得chr(72)。

答案 1 :(得分:1)

也许您想询问char是否可归类为numbers。如果是这样,是的,它们可以,因为char变量将char的值存储为数字。

说:

char c = 120; //legal

您可以在char中存储的数字范围取决于编译器。最常见的是,char变量存储范围从-128127的值,总共256种可能性。

根据Variables. Data Types. - C++ Documentation

您还可以使用从0255的无符号字符。

请注意,如果您存储超出此范围的数字,您将失去精确度。说:

char c = 300;
int i = c;
std::cout << i;   //prints 44
system("pause");
return 0;

答案 2 :(得分:1)

在“ C编程语言”(第二版)中,特别提到的是,就 stdio.h的字符操作函数而言,char和int类型之间没有区别

  

char类型专门用于存储(例如)字符数据,   但是可以使用任何整数类型

这是一本改编自本书的例子并说明了这一点:

#include <stdio.h>
/* copy input to output */
int
main(void)
{
  int c;
  while ((c = getchar()) != EOF)
    putchar(c);
}

答案 3 :(得分:0)

当然,charactor可以隐式转换为整数。

char a = 'c';
int b = a;

答案 4 :(得分:0)

使用TypeCasting:

char c = 'a';
int x = (int) c;
printf("%d\n", c);

OR

char c = 'a';
printf("%d\n", c);

两者都会给你97

答案 5 :(得分:0)

字符表示为整数。分析输入时的一个常见缺陷如下所示:

char c; // (!!) should be of type int to hold EOF

while((c = getchar()) != EOF) {
  // ...
}

答案 6 :(得分:0)

char是类似int的整数类型,范围缩小。

您可以像intshortlonglong long一样添加,复制,移位,打印和扫描。 char的范围小于其他人。涉及charshort的大量代码会默默地提升为int,因此需要谨慎。

char c;
int i;

c = -2; // OK
i = -2; // OK

// sizeof(c) == 1
// sizeof(i) >= 2  (often 4, sometimes 8)

scanf("%hhd", &c);
scanf("%d", &i);

printf("%hhd", c);
printf("%d", i);

byte为&gt;的异国情调的机器上9位,其他问题适用。