c语言初学者的一个问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 08:47:00
1、设double a;int b;float c;
scanf("%f,%2d,%*d,%5f",&a,&b,&c);
输入:5.3,12,456,1.23456回车
输入后,a的值变为0,b为12,c为1.234
问题小一:%*d是什么意思
2、scanf("%f,%4d",&a,&b);
若输入序列为:1.23,12345
则a=1.23,b=1234
问题小二:为什么前面的f不规定长度而后面的d就规定了?
问题小三:不设定是表示任意长度吗?

问题小一:上面那位回答很详细了
问题小二:那是自己定义的,你可以改其他数字
问题小三:不设并不是任意长度,看你自己定义的类型
基本类型包括字节型(char)、整型(int)和浮点型(float/double)。
定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对于int、double)对变量的取值区间和精度进行说明。

下面列举了Dev-C++下基本类型所占位数和取值范围:

符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例

-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
signed -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u
unsigned -- char 8 0 ~ 2^8-1 %c %c、%d、%u

[signed] short [int] 16 -2^15 ~ 2^15-1 %hd
unsigned short [int] 16 0 ~ 2^16-1 %hu、%ho、%hx

[signed] -- int 32 -2^31 ~ 2^31-1 %d
unsigned -- [int] 32 0 ~ 2^32-1 %u、%o、%x

[signed] long [int]