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