C语言中的字符串和数组
Strings and Arrays in C language
#include <stdio.h>
int main()
{
printf("%d", "123456"[1]);
return 0;
}
预期的输出是123456,但实际输出是50,这是为什么?
"123456"[1]
给出字符'2'
。该字符的 ascii 值是 50
.
要打印完整数字,请执行以下操作:printf ("%d", 123456);
或 printf ("%s", "123456");
您正在尝试使用 %d
打印一个整数,但您提供的是一个字符。要获得预期的输出,您必须提供一个整数作为 printf 的第二个参数,或者使用 %s
作为格式说明符。
printf ("%d", 123456);
或 printf ("%s", "123456");
现在,关于输出的解释 50
你得到:
此处,“123456”是 const char *
,因此当您尝试使用 [1]
从特定索引获取值时,它会使用 [=15] 的索引 1
=] 即 char 2
.
index -> 0 1 2 3 4 5
input -> 1 2 3 4 5 6
现在,当您使用格式说明符 %d
(整数)打印时,它打印了 char 2
的 ASCII 值,即 50
.
如果您需要准确的字符串,则不需要格式说明符
你可以简单地做
printf("123456");
您得到的输出为 50,因为在 C 中,字符串被视为 char 数组,它也可以根据格式说明符对值进行类型转换。
所以这里“123456”变成了一个数组。
1 索引处的字符为 2。
和 char "2" 的整数值,即 2 的 ascii 值是 50。
因此输出。
#include <stdio.h>
int main()
{
printf("%d", "123456"[1]);
return 0;
}
预期的输出是123456,但实际输出是50,这是为什么?
"123456"[1]
给出字符'2'
。该字符的 ascii 值是 50
.
要打印完整数字,请执行以下操作:printf ("%d", 123456);
或 printf ("%s", "123456");
您正在尝试使用 %d
打印一个整数,但您提供的是一个字符。要获得预期的输出,您必须提供一个整数作为 printf 的第二个参数,或者使用 %s
作为格式说明符。
printf ("%d", 123456);
或 printf ("%s", "123456");
现在,关于输出的解释 50
你得到:
此处,“123456”是 const char *
,因此当您尝试使用 [1]
从特定索引获取值时,它会使用 [=15] 的索引 1
=] 即 char 2
.
index -> 0 1 2 3 4 5
input -> 1 2 3 4 5 6
现在,当您使用格式说明符 %d
(整数)打印时,它打印了 char 2
的 ASCII 值,即 50
.
如果您需要准确的字符串,则不需要格式说明符 你可以简单地做
printf("123456");
您得到的输出为 50,因为在 C 中,字符串被视为 char 数组,它也可以根据格式说明符对值进行类型转换。
所以这里“123456”变成了一个数组。 1 索引处的字符为 2。 和 char "2" 的整数值,即 2 的 ascii 值是 50。 因此输出。