Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将数字读入字符_C_Char_Int_Scanf - Fatal编程技术网

C 将数字读入字符

C 将数字读入字符,c,char,int,scanf,C,Char,Int,Scanf,如果我将一个像20,301000…9999这样的整数读入变量a,会发生什么?它只打印我读到的数字的第一个数字…为什么? 例如,如果我读到123,它会在屏幕上打印1。它不是应该将整数123转换为它的等效ASCII字符表示形式吗 #include <stdio.h> int main() { char a; scanf("%c", &a); printf("%c", a); return 0; } #包括 int main(){ 字符a;

如果我将一个像20,301000…9999这样的整数读入变量a,会发生什么?它只打印我读到的数字的第一个数字…为什么? 例如,如果我读到123,它会在屏幕上打印1。它不是应该将整数123转换为它的等效ASCII字符表示形式吗

#include <stdio.h>

int main() {

    char a;

    scanf("%c", &a);
    printf("%c", a);

    return 0;
}
#包括
int main(){
字符a;
scanf(“%c”和“&a”);
printf(“%c”,a);
返回0;
}

这是C语言的一道试题。

否,它将机器表示为小整数的字符读入变量

如果输入100(数字100,三次按键,因此是三个字符),它将只存储该数字的第一个字符,即前导的
1

如果要将数字转换为实际整数,当然应该使用
%d
int
变量

使用
%c
打印将通过将小整数值解释为字符(而不是整数)来打印回单个字符。因此,对于100的输入,您将看到打印出来的
1
,即表示十进制数字1的字符


如果要打印读入的字符的数字表示形式,请使用
%c
扫描,但使用
%d
打印,然后在
printf()
调用中将
char
强制转换为
(int)

否,它将机器表示为小整数的字符读取到变量中

如果输入100(数字100,三次按键,因此是三个字符),它将只存储该数字的第一个字符,即前导的
1

如果要将数字转换为实际整数,当然应该使用
%d
int
变量

使用
%c
打印将通过将小整数值解释为字符(而不是整数)来打印回单个字符。因此,对于100的输入,您将看到打印出来的
1
,即表示十进制数字1的字符


如果要打印读入的字符的数字表示形式,请使用
%c
扫描,但使用
%d
打印,并在
printf()
调用中将
字符转换为
(int)

问题在于%c解析用于控制台输入的字符。从123这样的数字中,只取第一个字母,然后处理其余的字母。解析int值的方法是在scanf函数上使用%d。

问题是%c解析控制台输入的字符。从123这样的数字中,只取第一个字母,然后处理其余的字母。解析int值的方法是在scanf函数上使用%d。

否,它将只读取char变量中的第一个字符。char变量如何在一瞬间存储多个字符?不可能

因此,如果需要ASCII值,请改为以整数形式输入

int a;
scanf("%d", &a); // suppose input is 65
printf("%c", a); // prints 'A'
printf("%d", a); // prints 65
鉴于

char a;
scanf("%c", &a); // suppose input is 65
printf("%c", a); // prints '6'
printf("%d", a); // prints 54 which is the ASCII value of '6'

否,它将只读取char变量中的第一个字符。char变量如何在一瞬间存储多个字符?不可能

因此,如果需要ASCII值,请改为以整数形式输入

int a;
scanf("%d", &a); // suppose input is 65
printf("%c", a); // prints 'A'
printf("%d", a); // prints 65
鉴于

char a;
scanf("%c", &a); // suppose input is 65
printf("%c", a); // prints '6'
printf("%d", a); // prints 54 which is the ASCII value of '6'


char
是一个8位整数,可以是有符号的,也可以是无符号的,具体取决于具体实现。因此,它可以很好地表示256个不同的整数值。我的评论是这样的:“一个char变量如何存储多个字符?”我必须使用一个语言类。要结束这里的循环,您可以按照以下行操作:
printf(“%c”,a)在你的答案中加上另一个:printf(“%d”,a);为了说明格式说明符的不同之处,@Ryker谢谢!我在你使用这项技术发表文章前几秒钟就知道了。
char
是一个8位整数,有符号或无符号取决于具体实现。因此,它可以很好地表示256个不同的整数值。我的评论是这样的:“一个char变量如何存储多个字符?”我必须使用一个语言类。要结束这里的循环,您可以按照以下行操作:
printf(“%c”,a)在你的答案中加上另一个:printf(“%d”,a);为了说明格式说明符的不同之处,@Ryker谢谢!我在你发表文章前几秒钟就用这种技术解决了这个问题,我仍然感到困惑…所以它读取等效的ASCII字符,而ASCII字符又表示为一个小整数,存储在变量中?但是当我打印出来的时候,为什么不打印字符呢?如果你用
%c
打印,那么它会打印“字符”,在你的例子中
1
,这是一个非常典型的字符。我现在不明白你的困惑。哦,好吧,它把1读成一个字符,像'1'而不是数字1,所以如果我读12,这里实际上有两个字符'1'和'2'…呼,这一定是laaaarge键盘,键盘上的键标记为“10000”…;-)我仍然感到困惑…所以它读取等效的ASCII字符,而ASCII字符又表示为存储在变量中的小整数?但是当我打印出来的时候,为什么不打印字符呢?如果你用
%c
打印,那么它会打印“字符”,在你的例子中
1
,这是一个非常典型的字符。我现在不明白你的困惑。哦,好吧,它把1读成一个字符,像'1'而不是数字1,所以如果我读12,这里实际上有两个字符'1'和'2'…呼,这一定是laaaarge键盘,键盘上的键标记为“10000”…;-)我知道,但假设我输入值9,那么它应该在屏幕上打印\t,因为我在printf中使用了%c,但是它打印了9c,并在控制台输入上获取第一个字符的ascii码。在控制台上写入9并使用%c进行解析时,9的asccii代码存储在变量中。之后使用printf(“%c”,a),您将再次看到9,因为%c打印变量的ascci表示