gpt4 book ai didi

c - 如何避免 '+' '-' vanshing 但没有意义?

转载 作者:行者123 更新时间:2023-11-30 16:12:49 24 4
gpt4 key购买 nike

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'

请阅读,

Using symbols read by scanf() as C operators

即使 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com