#include<stdio.h> int main(int argc, const char *argv[]) { int i; scanf("%d.\n",&i); printf("%d.\n",i); return 0; }
源程序要求輸入的類型是%d,如今咱們輸入字符'a',
輸出結果:32766.
爲何出現這種結果?函數
#include<stdio.h> int main(void) { int a; while(scanf("%d",&a)==1) printf("%d\n",a); return 0; }
這個程序使用while循環,只要scanf有正確的數據輸入,纔會執行後面的printf。
編譯後,輸入字符'a',循環結束了,說明scanf根本沒有正確執行,獲得要的返回值(輸入的數據個數)。
稍微修改一下第一個程序code
#include<stdio.h> int main(int argc, const char *argv[]) { int i=3212; scanf("%d.\n",&i); printf("%d.\n",i); return 0; }
給i賦初值3212,而後編譯執行,輸入'a',輸出3212.說明scanf函數未按照格式輸入的時候,數據並無存到變量中,若是未給變量賦值的話,它會獲得隨機的數值。io