c语言中输出是printf()
一般格式是printf(格式控制字符串,输出值参数表)
例如 printf("f=%f,c=%f\n",f,c);
格式控制字符串是用双引号括起来的字符串,包括三类信息:
格式字符。格式字符由“%”引导,如%d、%f等。它的作用是控制输出字符的格式。
转义字符。格式控制字符串里的转义字符按照转义后的含义输出,如上面printf函数双引号内的换行符“\n”,即输出回车。
普通字符。普通字符即需要在输出时原样输出的字符,如上面printf函数中双引号内的“f=”和“c= ”部分。
格式化字符-整型
对于字节低的char和short 格式化输出会扩展位数
%d | 有符号的十进制数(int型) |
%u | 无符号的十进制数(unsigned int型) |
%d=int
%ld=long
%lld=long long
八进制和十六进制
%o | 以无符号的八进制整数形式输出,不输出前导符0 |
%x(X) | 以无符号十六进制整数形式(小写)输出,不输出前导符0x |
浮点的输入和输出
%e 是科学计数法形式
类型 | scanf | printf |
float | %f | %f %e |
double | %lf | %f %e |
%和f中间可以加上.n指定输出小数点后几位 这样的输出是四舍五入的(实际上测试之后也不一定 感觉和真实的储存位数和编译器有关)
补充 当定义的变量格式和printf输出格式不同时 二进制存储的位数和值不变 只是改变解读方式
int main()
{
int c=97;
//scanf("%d",&c);
printf("%d\n", c);//以整数输出
printf("%f\n", c);//以浮点数输出
printf("%c", c);//以字符型输出
//printf("b=%d\n", b);
return 0;
}
结果是
97
0.00
a//97对应的ASCII码值
补充 当运算符两边出现不一致的类型时,会自动转换成较大的类型 大的意思表示数的范围更大
char-short-int-long-long long
int-float-double
对于printf来说 任何小于int的类型都会自动转换成int;float会自动转换成double
所以输出float时使用%f就足够了 二者无论时float还是double printf自动处理成double
但是对于scanf来说 用的啥就必须输入什么
部分借鉴