【发布时间】:2020-07-28 09:46:24
【问题描述】:
我用 C 编写了一段代码,运行良好,我将它翻译成 C++。那里给出了错误的输出。我进行了一次迭代,其中我将输入和迭代器变量都用作 char 以节省空间。但表现不如预期。
unsigned char repeat, i;
cin >> repeat;
for(i= 0; i < repeat; i++)
什么是等价线
scanf("%hhi", &repeat)
?
【问题讨论】:
-
scanf("hhi", &repeat)-- 这到底是做什么的?这是对scanf的奇怪调用。 -
如果
x是'4',则x - '0'是4。 (数字必须是连续的。) -
@PaulMcKenzie 我猜 OP 的意思是
scanf("%hhi", &repeat);虽然%hhi匹配signed char,而不是unsigned char。 (scanf的规范中可能存在缺陷,即unsigned int没有等效的%i。) -
@IanAbbott:
"%hhu" -
@rici
"%hhu"并不完全相同,因为它只允许十进制输入,而%hhi允许在输入中使用可选的十六进制或八进制前缀,例如-42、-0x2a或-052都可以用于输入值-42。