1.有以下程序,程序的输出的结果 B
int main() { int a =666,b = 888; printf("%dn",a,b); }A 错误信息 B 666 C 888 D 666,888 解: printf函数参数的入栈顺序是从右到左(888先入栈,接着666入栈)。所以从栈里面读取一个数据时,指挥读取最后入栈的数据,也即是666 2.如下c程序,在64位处理器上运行后sz的值是 A 24 B 20 C 16 D 14 E 13 F 12 解: (1)struct的对齐原则,注意不同的编译器有不同的效果 (2)不同的数据类型在32位和64位下所占的字节数区别 32位编译器: char :1个字节 char * :4个字节 short int : 2个字节 unsigned int: 4个字节 float:4个字节 long:4个字节 double:8个字节 long long :4个字节 64位编译器: char :1个字节 short int : 2个字节 unsigned int: 4个字节 float:4个字节 long:8个字节 double:8个字节 long long :8个字节 unsigned long :8个字节 3.关于printf的知识点 (1)printf默认是右对齐 (2)printf和scanf是库函数,不是语句 (3)函数包括函数头、大括号、函数体三部分,函数体是可执行部分,而赋值语句只能放到函数体里 (4)printf输出的数据不仅受输出域宽和小数域宽限制,也受数据在内存中存储精度影响