unsigned u;
int i = scanf("%u",&u);
int c = getchar();
printf("%d is %u%c",i,u,c);//unsigned still has a type like orignal type
return 0;
输入
+
输出
0 is 4198579'\n'
'\n'是我添加的。
那么如何避免'+''-'消失但毫无意义呢?
如果我想实现复数类型,如何对“+i”、“-i”和“-888”进行分类?
scanf("%d") ,如果为 false,'+''-' 已被取出,-i 无法正确表示。
最佳答案
int i = scanf("%u",&u);
您必须使用一些值初始化u
,或者至少为scanf
提供一些值。如果您在 scanf 期间不提供输入,则 u
是一个带有垃圾值的未初始化局部变量。还可以使用 fgets
代替 scanf,这被认为更安全。
0 is 4198579'\n'
请阅读,
即使 getchar() 也无济于事。您需要为此编写自己的解析器。
或者,如果您只想打印标志,请尝试使用 ASCII,
#define PLUSSIGN 43
unsigned int u = PLUSSIGN;
printf("%d is %u%c",i,u,c);
其他方法包括使用枚举类型来定义具有 ASCII 值的符号。如果您想根据某些输入以编程方式使用符号,这会有所帮助,
或者您可以在 switch
语句中将它们用作字符串(最简单的方法)。根据您要实现的目标选择任意方法。
关于c - 如何避免 '+' '-' vanshing 但没有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245372/