關於scanf函數的輸入類型不匹配問題

#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

相關文章
相關標籤/搜索