&为取地址符。printf和scanf不同,scanf把控制台中的输入放入变量因为C语言中不支持引用类型所以只能传指针所以scanf需要变量的地址才能把数据放入变量中,而printf不同,而且你这里用了&号就是取变量的地址。而指针中&是取指针指向的变量的内容。这两个是不同的。下面列举一些常见的printf格式输出:%a(%A) 浮点数、十六进制%c 字符
%d 有符号十进制整数
%f 浮点数%e(%E) 浮点数指数输出
%g(%G) 浮点数不显无意义的零"0"
%i 有符号十进制整数%u 无符号十进制整数
%o 八进制整数
%x(%X) 十六进制整数
%p 指针
%s 字符串%% "%"%l我没用到过所以就不知道了
%o 这个表示输出结果为八进制& 只有两种意思,一个是取址,另一个是按位与操作 %a(A) 浮点数、十六进制数字和p-记数法(C99)
%c 一个字符
%d 有符号十进制整数
%e(E) 浮点数、e-记数法
%f 浮点数、十进制记数法
%g(G) 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x(X) 使用十六进制数字0f的无符号十六进制整数
%% 打印一个百分号
& 是取地址符一样 都是 取地址运算符%ld 长整形 long&%f double%c char%s 输入一个字符串%l 长整形%e 指数