一、变量的内存寻址
内存寻址从大到小,如果按照这种规则,那么先定义的变量内存地址一定大于后定义的变量;
int call(){
int numbler ;
int value ;
//内存寻址:从大到小,如果按照这种规则,那么先定义的变量内存地址一定大于后定义的变量
//内存地址是16进制的:
// a b c d e f
// 10 11 12 13 14 15
//0x7fff5fbff74c c代表12
//0x7fff5fbff748 c大于8
printf("%p\n",&numbler);
printf("%p\n",&value);
return 0 ;
}
二、指定输出位宽
如何指定位宽? %mi 其中m就是位宽(也就是占用几列),而i输出对应类型的数据;
1.默认情况下位宽是右对齐,如果需要输出的类型宽度不够,会在左边补空格;
2.如果在位宽前面加个-号,就会改变位宽的对齐方式为左对齐,如果需要输出的类型宽度不够,会在右边补空格;
3.如果指定了位宽,但是实际输入的内容超出了宽度,会按照实际的宽度来输出;
4.如果在位宽的前面加上0,如:%02i 代表如果输入的不够2位,就用0来补齐,如果宽度已经够了,那么会按实际的宽度来输出;
int main(int argc, const char * argv[]) {
// insert code here...
int number;
printf("%5i\n",number);
//输出位: 0 注意:0前面有四个空格
return 0;
}
二、保留小数
%f 默认会保留6位小数;
指定保留多少位小数:%.nf,其中n就是需要保留多少位小数,f用于输出实型;
c语言基本数据类型printf()对应格式:
%d 十进制有符号整数 sign
%u 十进制无符号整数 unsigned
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
char c, s[20], *p;
int a=1234, *i;
float f=3.141592653589;
double x=0.12345678987654321;
p="How do you do";
strcpy(s, "Hello, Comrade");
*i=12;
c='\x41';
printf("a=%d\n", a); /*结果输出十进制整数a=1234*/
printf("a=%6d\n", a); /*结果输出6位十进制数a= 1234*/
printf("a=%06d\n", a); /*结果输出6位十进制数a=001234*/
printf("a=%2d\n", a); /*a超过2位, 按实际值输出a=1234*/
printf("*i=%4d\n", *i); /*输出4位十进制整数*i= 12*/
printf("*i=%-4d\n", *i); /*输出左对齐4位十进制整数*i=12*/
printf("i=%p\n", i); /*输出地址i=06E4*/
printf("f=%f\n", f); /*输出浮点数f=3.141593*/
printf("f=6.4f\n", f); /*输出6位其中小数点后4位的浮点数
f=3.1416*/
printf("x=%lf\n", x); /*输出长浮点数x=0.123457*/
printf("x=%18.16lf\n", x);/*输出18位其中小数点后16位的长浮点
数x=0.1234567898765432*/
printf("c=%c\n", c); /*输出字符c=A*/
printf("c=%x\n", c); /*输出字符的ASCII码值c=41*/
printf("s[]=%s\n", s); /*输出数组字符串s[]=Hello, Comrade*/
printf("s[]=%6.9s\n", s);/*输出最多9个字符的字符串s[]=Hello,
Co*/
printf("s=%p\n", s); /*输出数组字符串首字符地址s=FFBE*/
printf("*p=%s\n", p); /* 输出指针字符串p=How do you do*/
printf("p=%p\n", p); /*输出指针的值p=0194*/
网友评论