在這段代碼中,爲什麼我得到i =「一些垃圾值」作爲輸出?我看到我正在申報,但值= 10,未分配。爲什麼?開關櫃內部 - 變量定義相關
main()
{
int a =1;
switch (a)
{
int b = 10;
case 1: printf ("b = %d \n", b);
break;
}
在這段代碼中,爲什麼我得到i =「一些垃圾值」作爲輸出?我看到我正在申報,但值= 10,未分配。爲什麼?開關櫃內部 - 變量定義相關
main()
{
int a =1;
switch (a)
{
int b = 10;
case 1: printf ("b = %d \n", b);
break;
}
如果你想有一個case語句裏面的變量,這樣做的正確方法是:
switch(a)
{
case 1:
{
int b=10; //start a new block scope
printf("b=%d",b);
}
break;
}
我知道,但你共享的解決方案改變了我的需求。在您的代碼中聲明的int b不會被其他情況訪問。無論如何,但那不是我想討論的事情。我只是想明白,爲什麼我的代碼行爲出乎意料。 @Akshay Immanuel – Doherty
編譯'-Wall'並修復警告。 – user3386109