&为取地址符。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我没用到过所以就不知道了