数据类型介绍

3
我刚开始学习C语言,这段代码是我从一本书上复制过来的。请问为什么它不能运行?
#include <stdio.h>

int main (void)
{
    int     integerVar = 100;
    float   floatingVar = 331.79;
    double  doubleVar = 8.44e+11;
    char    charVar = "W";

    _Bool   boolVar = 0;

    printf ("integerVar = %i\n", integerVar);
    printf ("floatingVar = %f\n", floatingVar);
    printf ("doubleVar = %e\n", doubleVar);
    printf ("doubleVar = %g\n", doubleVar);
    printf ("charVar = %c\n", charVar);

    printf ("boolVar = %i\n", boolVar);

    return 0;
}

我收到了这个错误信息:

datatypes.c: In function ‘main’:
datatypes.c:8: warning: initialization makes integer from pointer without a cast
6个回答

6
问题在于:
char    charVar = "W";

您可能指的是:

char    charVar = 'W';

""W"是一个字符串。 'W'是一个字符。后者是您想要的。"

3
应该使用'w'而不是"w"。后者是以零结尾的字符串,也就是指向字符数组的指针。

3

"W"不是一个字符,而是一个字符串常量。你需要的是'W'

而字符串常量是指向字符数组的指针(在这种情况下,为{'W', 0}),因此会出现警告:“初始化将指针转换为整数”。

这里,“整数”应被理解为任何整数类型(char、short、int、long、long long对于定义它的编译器以及它们的无符号变体和众多的typedef...)


2

"W"代表char*或C字符串。
'W'代表char,或单个1字节字符,这是您想要的。

单引号/双引号是区分两者的标志。


1

在这个例子中,char charVar="W"; 这一行不正确,因为 "W" 是一个字符串,被当作指向字符数组的指针来处理。要将其改为 'W',以便表示这是一个字符。


0
在 C 语言中,字符串和字符有区别。实际上,字符串是字符序列,定义为 char[length] 或者是可变长度的 char*。由于它包含多个字符,所以需要一个“指针”进行操作(不用担心,我不会解释)。
为了使 C 编译器知道字符和字符串之间的区别,它发明了两种引号风格:单引号和双引号。一个 char 使用单引号来表示(如:'W'),而字符串使用双引号来表示(如:"W")。
你可以像下面这样声明一个字符串:
char* myString = "this is a string";

当声明一个单个字符时,可以像这样:

char charVar = 'W';

底线:字符串是一系列的字符,用双引号定义。单个字符则用单引号定义。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接