为了准备保研,这几天翻了翻c primer。
发现了书中的一点错误:
// example1.c -- 例子1
#include <stdio.h>
int main (void) {
unsigned long numOne = 1, numTwo = 2;
printf ("%ul %ul", numOne, numTwo);
fflush (stdin);
getchar ();
return 0;
}
可以看出,printf()函数是将%ul当做%u和字符l的。
同样的,对于scanf()函数也是一样的。
// example2.c -- 例子2
#include <stdio.h>
int main (void) {
unsigned long numOne, numTwo;
if (scanf ("%ul %ul", &numOne, &numTwo) == 2)
printf ("Hello World!\n");
else
printf ("Error!");
fflush (stdin);
getchar ();
return 0;
}
结果可想而知:
估计prata爷爷觉得unsigned long符合语法语义规则吧,long unsigned总觉得让人不舒服。但是,结果看来long unsigned是正确的。