问题标签 [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.
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。
c - 为什么 printf 不能正确处理标志、字段宽度和精度?
我正在尝试发现 printf 的所有功能,并且我已经尝试过:
打印
测试:%+100d
我首先使用了 flag +
,然后是宽度*
和重新使用 flag 0
。
为什么要输出这个?我故意printf()
以不好的方式使用,但我想知道为什么它显示数字 100?
python - 在 Python 中创建新的转换说明符
在python中,我们有转换说明符,如
哪个打印
如何制作自己的转换说明符,例如
以下列格式打印整数
或将其转换为二进制
哪个打印
我需要继承哪些类,需要修改哪些功能?如果可能,请提供一个小例子。
谢谢!!
c - c结构:输入需要在每个数字后按“enter”逐行输入
如何在每行不写一个数字的情况下添加 10 位数字。
c - 我已经编写了一个从 Celisius 转换为 Fahrenheit 的代码,但是输出太大了
代码是:
输出是:
输入Celisius的温度:100
-925596049101779740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来
c - 为什么这个 *ptr 不给出存储在 ptr 变量中包含的内存地址的实际值?
这是一个关于指针的基本 C 程序:
这会产生以下输出:
但是*pointerToVariable
应该打印 20,不是吗?因为*
给出了存储在其操作数中存储的内存地址的实际值,对吧?我错过了什么?
c - 读取一个整数,一次一位数
我已经看到以下代码工作:
但以下代码失败:
失败代码中的数字都是32767
. 为什么是这样?
编辑:我刚刚在这里给出了一个代码片段。我正在尝试 KNKing 的 C Programming: A Modern Approach 中的练习题
我看到第二个代码片段通过一一打印出数组内容而失败。
在这里看到很多负面的回应,没有任何解释我应该如何构建我的问题根本没有帮助。另外,我确信有其他方法可以解决这个问题,但我只是问为什么第二个代码片段在第一种情况下失败。
编辑 2:作为输入,我输入一个 5 位数字,然后输入键:比如 12345\n。在第一个片段中,1 存储在 d1 中,2 存储在 d2 中,依此类推。
在第二个代码片段中,ar[0] 是 32767 而不是 1,依此类推。所以它失败了。
c - C:带有字段跳过符“%*”的 Scanf 字符串应用于 while 循环中的转换说明符
我已经定义了一个结构
我在while循环中使用它作为输入
但循环只接受名字并跳过之后的所有其他输入(它完成,但输入为空)。这个例子来自C教科书,那么问题出在哪里?
如果不跳过字段,它的效果会更好"%*[\n\t ]"
,但教科书告诉你要使用它。
c - 诠释 x; scanf() 与 %d 和 printf() 与 %c
诠释 x; 因此变量将有 2 个字节的内存。现在,如果我输入 66 并且因为 scanf() 带有 %d,66 将存储在 2 个字节的内存中,因为变量被声明为 int。
现在在带有 %c 的 printf() 中,应该只从一个字节的内存中收集数据来显示。
但是 %c 通过从内存中获取正确的数据 66 来正确显示 B。
为什么它 %c 不只是从一个字节中获取数据?
c - 究竟什么是“无效的转换规范”?
根据C11
第 7.21.6.1 章 P9
如果转换规范无效,则行为未定义。282)如果任何参数不是相应转换规范的正确类型,则行为未定义。
直到那时,我的理解是,因为
- 语句like
printf("%S", str);
属于第一句,不存在CS as%S
(UPPERCASE) - 语句 like
printf("%d", str);
属于第二句(CS 和参数类型不匹配,但无论如何都不%d
是“无效”的 CS)
我的理解错了吗?第二个语句也可以归类为“无效”(PS-不是“错误”)转换说明符吗?
更新:答案和评论线程已被删除,这是 <10K 用户的快照。