问题标签 [conversion-specifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
359129 浏览

c - 在 c 中使用 scanf 读取双精度值

我尝试在 C 中使用 scanf() 读取 2 个值,但系统写入内存的值不等于我输入的值。这是代码:

如果我输入 1 和 2,CMD 返回正确,但 b = -858993460 这是我已经尝试过的:使用 float 或 int 而不是 double,使用 scanf_s,使用 scanf("%d or %f for %i or %li或 %lf 或 %e 或 %g ),使用 fflush(stdin) 清除键盘缓冲区,首先读取 b ,尝试所有可能的组合。我发现在 32 位操作系统上 double 的长度存在问题,这样你就不得不使用 scanf("%lf", &f) 来读取双精度。无论我做什么,第二个值总是错误的。

我在 Windows 7 32 位操作系统上使用 MS VS express 2012 for Desktop。

0 投票
3 回答
425 浏览

c - 为什么 printf 不能正确处理标志、字段宽度和精度?

我正在尝试发现 printf 的所有功能,并且我已经尝试过:

打印

测试:%+100d

我首先使用了 flag +,然后是宽度*和重新使用 flag 0

为什么要输出这个?我故意printf()不好的方式使用,但我想知道为什么它显示数字 100?

0 投票
2 回答
263 浏览

python - 在 Python 中创建新的转换说明符

在python中,我们有转换说明符,如

哪个打印

如何制作自己的转换说明符,例如

以下列格式打印整数

或将其转换为二进制

哪个打印

我需要继承哪些类,需要修改哪些功能?如果可能,请提供一个小例子。

谢谢!!

0 投票
1 回答
96 浏览

c - c结构:输入需要在每个数字后按“enter”逐行输入

如何在每行不写一个数字的情况下添加 10 位数字。

0 投票
1 回答
69 浏览

c - 我已经编写了一个从 Celisius 转换为 Fahrenheit 的代码,但是输出太大了

代码是:

输出是:

输入Celisius的温度:100
-925596049101779740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来

0 投票
3 回答
58 浏览

c - 为什么这个 *ptr 不给出存储在 ptr 变量中包含的内存地址的实际值?

这是一个关于指针的基本 C 程序:

这会产生以下输出:

但是*pointerToVariable应该打印 20,不是吗?因为*给出了存储在其操作数中存储的内存地址的实际值,对吧?我错过了什么?

0 投票
1 回答
2859 浏览

c - 读取一个整数,一次一位数

我已经看到以下代码工作:

但以下代码失败:

失败代码中的数字都是32767. 为什么是这样?

编辑:我刚刚在这里给出了一个代码片段。我正在尝试 KNKing 的 C Programming: A Modern Approach 中的练习题

我看到第二个代码片段通过一一打印出数组内容而失败。

在这里看到很多负面的回应,没有任何解释我应该如何构建我的问题根本没有帮助。另外,我确信有其他方法可以解决这个问题,但我只是问为什么第二个代码片段在第一种情况下失败。

编辑 2:作为输入,我输入一个 5 位数字,然后输入键:比如 12345\n。在第一个片段中,1 存储在 d1 中,2 存储在 d2 中,依此类推。

在第二个代码片段中,ar[0] 是 32767 而不是 1,依此类推。所以它失败了。

0 投票
1 回答
76 浏览

c - C:带有字段跳过符“%*”的 Scanf 字符串应用于 while 循环中的转换说明符

我已经定义了一个结构

我在while循环中使用它作为输入

但循环只接受名字并跳过之后的所有其他输入(它完成,但输入为空)。这个例子来自C教科书,那么问题出在哪里?

如果不跳过字段,它的效果会更好"%*[\n\t ]",但教科书告诉你要使用它。

0 投票
3 回答
556 浏览

c - 诠释 x; scanf() 与 %d 和 printf() 与 %c

诠释 x; 因此变量将有 2 个字节的内存。现在,如果我输入 66 并且因为 scanf() 带有 %d,66 将存储在 2 个字节的内存中,因为变量被声明为 int。

现在在带有 %c 的 printf() 中,应该只从一个字节的内存中收集数据来显示。

但是 %c 通过从内存中获取正确的数据 66 来正确显示 B。

为什么它 %c 不只是从一个字节中获取数据?

0 投票
3 回答
3038 浏览

c - 究竟什么是“无效的转换规范”?

根据C11第 7.21.6.1 章 P9

如果转换规范无效,则行为未定义。282)如果任何参数不是相应转换规范的正确类型,则行为未定义。

直到那时,我的理解是,因为

  • 语句likeprintf("%S", str);属于第一句,不存在CS as %S(UPPERCASE)
  • 语句 likeprintf("%d", str);属于第二句(CS 和参数类型不匹配,但无论如何都不%d是“无效”的 CS)

直到最近的评论线程另有通知

我的理解错了吗?第二个语句可以归类为“无效”(PS-不是“错误”)转换说明符吗?


更新:答案和评论线程已被删除,这是 <10K 用户的快照