鱼C论坛

 找回密码
 立即注册
查看: 1644|回复: 4

[已解决][新手存疑求解].01

[复制链接]
发表于 2020-8-6 14:29:11 | 显示全部楼层 |阅读模式
3鱼币
本帖最后由 122Ml 于 2020-8-6 14:31 编辑

好吧,新手入坑,遇到的疑难点有点多,希望大佬解答。个人认为问题都比较简单(放在自己身上除外)。

先提出10个疑问,不然最佳不好选。

(最佳答案选择:每条先答疑的,计一分,最后根据总分选)

开始吧!


1.
原句:常量7.0------类型double------转换说明%d

这说的是7.0在计算,编译过程中转化为double类型,最后以float类型存储?


2.
原句:常量‘\040’------类型char(实际上是int)------转换说明%c

为什么说该常量为char类型,但实际上是int呢?是它在内存中转化成了ASCII字符码的意思吗?


3.
十六进制数怎么看?例如: 0xa.1fp10  和  0x5.b6p12。

我对第一个数的理解:0x是十六进制的表示,1f为数值,p10看不懂......


4.
常量与变量可以这么理解吗:常量不变,变量是常量的牌子,需要常量的数值时,用变量召唤......这样的好处是可以更好的记忆住变量,例如int shengao=170;



5.
原文:转换说明%g------根据值的不同,自动选择%f或%e。%e格式用于指数小于-4或者大于或等于精度时

这该怎么理解?


6.
原文:printf()的修饰符------hh------和整数转换说明一起使用,表示signed char或unsigned char类型的值

hh和c有什么区别呢?


7.
原文:printf()中的标记------标记‘+’      若符号值为负,则在值前面表示减号。

这是什么意思,完全看不懂。


8.
原文:printf()中的标记------标记‘空格’         若符号值为负,则在值前面表示减号+标记覆盖一个空格。

不懂......


9.
%10.2f与%010.2f,10表示10个字符宽度,.2表示两位精度,f表示float类型,在前面加一个0,多余的空格就会被0填充,这是什么原理?



10.
在printf()的标记中,-可表示左对齐,那么右对齐该怎么表示呢?(如果有的话)


望解答

最佳答案
2020-8-6 14:29:12
本帖最后由 baige 于 2020-8-6 15:32 编辑

10.右对齐不用写,本来就是右对齐的
9.所得结果是float类型并且保留10位,其中两位为小数点,位数不够用0补齐!!应该是这样规定的吧
8.就是右对齐,如float a = -2, b = 2; printf("%6.2f\n%6.2f",a,b);a,b输出对比,一个空格被-覆盖了
7.用来正数输出+,负数当然输出-
5.%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法
printf("%g\n", 0.00001234);
printf("%g\n", 0.0001234);
printf("%.2g\n", 123.45);
printf("%.2g\n", 23.45);
上面四句输出结果为:
1.234e-05
0.0001234
1.2e+02
23
对于指数小于-4或者大于给定精度的数值,按照%e的控制输出,否则按照%f的控制输出.看上面输出
4.常量是常量,变量是变量,常量是不能改变的
常量是在程序运算过程中不变的量。 常量在程序中经常直接出现,如123、3.14159、‘a’、“computer”,此时只要求它们符合相应类型数据的表示方法。相应于各种数据类型,有整型常量、浮点型常量、字符型常量及字符串常量。 常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现。 格式:#define 标识符常量 由用户命名的标识符是符号常量名。作为符号常量名,一般大写。一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替。 对使用了符号常量的程序在编译前会以实际常量替代符号常量。
例:#define PI 3.14
1.我感觉你打错了,常量7.0------类型double------转换说明%f
7.0编译器会把它当成双精度(避免精度损失)然后输出用%f输出浮点数
答不下去了

最佳答案

查看完整内容

10.右对齐不用写,本来就是右对齐的 9.所得结果是float类型并且保留10位,其中两位为小数点,位数不够用0补齐!!应该是这样规定的吧 8.就是右对齐,如float a = -2, b = 2; printf("%6.2f\n%6.2f",a,b);a,b输出对比,一个空格被-覆盖了 7.用来正数输出+,负数当然输出- 5.%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-6 14:29:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 baige 于 2020-8-6 15:32 编辑

10.右对齐不用写,本来就是右对齐的
9.所得结果是float类型并且保留10位,其中两位为小数点,位数不够用0补齐!!应该是这样规定的吧
8.就是右对齐,如float a = -2, b = 2; printf("%6.2f\n%6.2f",a,b);a,b输出对比,一个空格被-覆盖了
7.用来正数输出+,负数当然输出-
5.%g用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小的一种),且不输出无意义的0。即%g是根据结果自动选择科学记数法还是一般的小数记数法
printf("%g\n", 0.00001234);
printf("%g\n", 0.0001234);
printf("%.2g\n", 123.45);
printf("%.2g\n", 23.45);
上面四句输出结果为:
1.234e-05
0.0001234
1.2e+02
23
对于指数小于-4或者大于给定精度的数值,按照%e的控制输出,否则按照%f的控制输出.看上面输出
4.常量是常量,变量是变量,常量是不能改变的
常量是在程序运算过程中不变的量。 常量在程序中经常直接出现,如123、3.14159、‘a’、“computer”,此时只要求它们符合相应类型数据的表示方法。相应于各种数据类型,有整型常量、浮点型常量、字符型常量及字符串常量。 常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现。 格式:#define 标识符常量 由用户命名的标识符是符号常量名。作为符号常量名,一般大写。一旦定义,在程序中凡是出现常量的地方均可用符号常量名来代替。 对使用了符号常量的程序在编译前会以实际常量替代符号常量。
例:#define PI 3.14
1.我感觉你打错了,常量7.0------类型double------转换说明%f
7.0编译器会把它当成双精度(避免精度损失)然后输出用%f输出浮点数
答不下去了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-6 14:35:11 | 显示全部楼层
第十条我再看下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-6 16:38:27 | 显示全部楼层
本帖最后由 405794672 于 2020-8-7 19:17 编辑

一个没错并教了你更多,你竟然选一个答题让新手看不懂的为答案。我泪奔 或许你看不懂我的,那就别看了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-7 10:15:55 | 显示全部楼层
405794672 发表于 2020-8-6 16:38
这是什么鬼句子?足以说明编书的人语文不好。编得让人看不懂。编书,就是要让没看过的人看得懂,
不然有个 ...

《C Primer Plus》中文版,的确有点晦涩,但非常全面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表