这是我的程序:
#include <stdio.h>
int main() {
int age = 21;
float cgpa = 8.92;
char name = "Karan";
printf("My Name Is %c", name);
printf("You are %d years old", age);
printf("My Avg cgpa is %f", cgpa);
return 0;
}
我收到此编译器错误:
hello.c: In function 'main':
hello.c:6:15: warning: initialization makes integer from pointer without a cast [-Wint-conversion]
char name = "Karan";
^~~~~~~
“Karan”是一个字符串文字,而不是单个字符。
字符串文字从技术上讲是一个字符数组,保存字符串的变量必须是指向字符数组的指针。
char first_char = 'a';
char second_char = 'b';
printf("First char is %c and second is %c", first_char, second_char);
C 中单个字符的存储方式为
%c
。
要存储字符串,需要声明一个字符或字符指针数组,这是通过
完成的char* name = "Karan";
printf("My name is %s", name);
其格式说明符为
%s
。
另请注意,在声明字符串时使用双引号,在声明字符时使用单引号
char name[] = 'Karan';当您声明由多个字符组成的任何内容时,应该使用这种语法。 Karan 有多个字符,因此应将其声明为字符数组。字符应使用 '' 声明,字符串应使用“”声明。使用“”和“”时有很多区别。因此在声明字符数组时要小心。