C 打印字符时输出随机值
我的代码如下,我不熟悉C语言,但能流利地使用Java:C 打印字符时输出随机值,c,C,我的代码如下,我不熟悉C语言,但能流利地使用Java: #include<stdio.h> int main(){ int number; int firstInitial; int lastInitial; printf("\n\nEnter your first initial: "); scanf("\n\n%c", &firstInitial); printf("
#include<stdio.h>
int main(){
int number;
int firstInitial;
int lastInitial;
printf("\n\nEnter your first initial: ");
scanf("\n\n%c", &firstInitial);
printf("\nFirst Initial: %c", firstInitial);
(int)firstInitial;
printf("\nFirst Initial Decimal Value: %d", firstInitial);
//Second Initial
printf("\n\nEnter your Last Initial: ");
scanf("\n\n%c", &lastInitial);
printf("\nLast Initial: %c", lastInitial);
(int)lastInitial;
printf("\nLast Initial Decimal Value: %d", lastInitial);
return 0;
}
#包括
int main(){
整数;
int首字母;
int lastInitial;
printf(“\n\n输入首字母:”);
scanf(“\n\n%c”,&firstInitial);
printf(“\n首字母:%c”,首字母);
(int)首字母;
printf(“\n第一个初始十进制值:%d”,第一个初始值);
//第二首字母
printf(“\n\n输入最后一个首字母:”);
scanf(“\n\n%c,&lastInitial”);
printf(“\n最后一个首字母:%c”,最后一个首字母);
(int)最后一个首字母;
printf(“\n最后一个初始十进制值:%d”,最后一个初始值);
返回0;
}
我的输出中的问题是,在我将字符转换为int之后,它会输出一个随机的7位数。例如,对于第一个首字母,我输入了“a”,收到的是“4194401”,而不是97。程序应该接收一个字符,并在ASCII图表中打印该字符及其字符的十进制值。我已将
firstInitial
和lastInitial
的数据类型更改为char
,因为您需要一个字符。另外,(int)firstInitial
和(int)lastInitial
语句没有任何作用-无论有没有它们,代码都可以正常工作
#包括
int main(){
整数;
字符首字母;
字符首字母;
printf(“\n\n输入首字母:”);
scanf(“\n\n%c”,&firstInitial);
printf(“\n首字母:%c”,首字母);
printf(“\n第一个初始十进制值:%d”,第一个初始值);
//第二首字母
printf(“\n\n输入最后一个首字母:”);
scanf(“\n\n%c,&lastInitial”);
printf(“\n最后一个首字母:%c”,最后一个首字母);
printf(“\n最后一个初始十进制值:%d”,最后一个初始值);
返回0;
}
%c
告诉scanf
下一个参数是char*
,但您给了它一个int*
。那是未定义的行为。从int
转换到char
是有效的,但不能从int*
转换到char*
。它们不一样。行(int)lastInitial代码>什么也不做。编译器应该给你一个警告,上面写着“表达式结果未使用”。@kaylum不是同样的可移植的,也不是到处都一样吗?使用参数,如-Wall-Wextra-pedantic-Wconversion
等对GCC很有帮助,对Clang使用-Weverything
。作为一种普遍趋势,不可预测和随机的结果要么是由于UB,要么是由于指针使用不当。@APJo不要在Clang上使用-Weverything
。它有一些讨厌的警告,与日常使用无关<代码>-Wall-Wextra-Werror
对于新手来说是更好的选择。