[英]why does scanf not store ascii value of character in an integer variable properly?
[英]How does scanf store value?
我是 C 的新手。鑒於以下代碼,
int main(void)
{
int a;
scanf("%d",&a);
scanf("\n"); // consume trailing newline
}
據我了解,第一個聲明語句告訴編譯器為整數類型變量分配內存,其標識符“a”初始化為 0(如“a==0”)。 Scanf 需要一個有效的內存地址來存儲用戶輸入(比如 5),因此 &a 是“a”的內存地址,用戶輸入存儲為“a==5”。 是這種情況還是'a'被存儲為內存地址的變量名並且地址的內容只是5?
是這種情況還是“a”被存儲為內存地址的變量名
&a
是指向為a
保留的內存的指針。 不涉及名稱“a”。
... 初始化為 0
默認情況下不初始化自動對象。 在沒有static
、 extern
或_Thread_local
的函數內聲明的任何對象都具有自動存儲持續時間。
未初始化對象的值是不確定的,這意味着它沒有固定值; 每次使用它時,它可能表現得好像它具有不同的值。 (如果顯式初始化自動對象的任何部分,例如數組的一個元素或結構的一個成員,整個對象將被初始化,對於數字類型默認為零,對於指針類型默認為空指針。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.