[新手存疑求解].01
本帖最后由 122Ml 于 2020-8-6 14:31 编辑{:10_266:} 好吧,新手入坑,遇到的疑难点有点多,希望大佬解答。个人认为问题都比较简单(放在自己身上除外)。
先提出10个疑问,不然最佳不好选。
(最佳答案选择:每条先答疑的,计一分,最后根据总分选){:10_256:}
开始吧!
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()的标记中,-可表示左对齐,那么右对齐该怎么表示呢?(如果有的话)
望解答{:10_282:}
本帖最后由 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_277:} {:10_275:}第十条我再看下 本帖最后由 405794672 于 2020-8-7 19:17 编辑
一个没错并教了你更多,你竟然选一个答题让新手看不懂的为答案。我泪奔{:5_104:} 或许你看不懂我的,那就别看了吧 405794672 发表于 2020-8-6 16:38
这是什么鬼句子?足以说明编书的人语文不好。编得让人看不懂。编书,就是要让没看过的人看得懂,
不然有个 ...
《C Primer Plus》中文版,的确有点晦涩,但非常全面
页:
[1]