小编ron*_*ino的帖子

scanf%u负数?

我已经尝试了scanf("%u",&number),我输入了负数,问题就在于printf("%d",number)我得到负数.我以为这会阻止我阅读负数.是scanf("%d",&number)scanf("%u",&number)真的一样吗?或者只是为了可读性.

我在做一些叫做未定义行为的事情吗?

编辑:

维基百科我读到这个:

%u:扫描十进制无符号整数(注意,在C99标准中,输入值减号是可选的,因此如果读取减号,则不会出现错误,结果将是负数的二进制补码,可能是非常大的价值.

阅读SO答案及以上,有点令人困惑.有人能说得更清楚吗?

c printf unsigned scanf format-specifiers

5
推荐指数
1
解决办法
5436
查看次数

%ms和%s scanf之间的差异

阅读scanf手册我遇到这一行:

一个可选的'm'字符.这用于字符串转换(%s,%c,%[),

有人可以通过简单的例子来解释它,在某些情况下说明这种选择的区别和需要吗?

c gcc glibc scanf

4
推荐指数
1
解决办法
7133
查看次数

整数转换排名和提升

阅读有关整数提升和整数转换等级的信息,我找到了此链接

  • 1.如果两个操作数具有相同的类型,则无需进一步转换。
  • 2.否则,如果两个操作数都具有符号整数类型或都具有无符号整数类型,则将具有较小整数转换等级的操作数转换为具有较大等级的操作数的类型。
  • 3.否则,如果具有无符号整数类型的操作数的秩大于或等于另一个操作数的类型的秩,则带符号整数类型的操作数将转换为无符号整数类型的操作数的类型。

  • 4,否则,如果带符号整数类型的操作数的类型可以表示无符号整数类型的操作数的所有值,则将无符号整数类型的操作数转换为带符号整数类型的操作数的类型。

  • 5.否则,两个操作数都将转换为与带符号整数类型的操作数类型相对应的无符号整数类型。

要点1 2 3完全清楚,但是我仍然没有给出案例4和5的示例。有人可以提供有关任何实现的示例吗?

据我所知,整数转换等级为:

_Bool <char <short <int <long <long long int

无论与类型相关的字节大小是相等还是更高。对?

关于升级或从一种类型转换为另一种类型。添加到最低类型零或1的位还是左极限位对此有影响?

我想知道位视图中的过程如何进行,尤其是对于转换。

对于整数促销,毫无疑问,它始终可以保留值和符号。

c integer type-conversion

4
推荐指数
1
解决办法
485
查看次数

为格式说明符传递的printf参数太少 - 是不确定的行为?

据我所知,参数的格式说明符太少被认为是未定义的行为(格式说明符的参数太少也是未定义的行为).这适用于:

printf("%1$d %1$d", 5);
Run Code Online (Sandbox Code Playgroud)

PS使用"%1$d"as格式说明符是POSIX添加的函数族的扩展printf.

c printf posix

3
推荐指数
1
解决办法
597
查看次数

标签 统计

c ×4

printf ×2

scanf ×2

format-specifiers ×1

gcc ×1

glibc ×1

integer ×1

posix ×1

type-conversion ×1

unsigned ×1