匿名
char b[5];
cout << (int)b[0];
結果print出來的結果是44
我知道char儲存的是ascii的數值
那char array 在未指定值之前為何經過強制轉型後會輸出44?
但如果單純以char輸出則是空白
想請問版上大大們這是為甚麼呢?
你可能有興趣的文章...
全部留言
如果我沒有記錯的話是這樣 對未指定值的變數做取值屬於未定義行為 未定義行為的意思就是說 電腦可以做任何它想做的事情 它可能會告訴你是44 也可能是94 87之類的 你沒有辦法預測它會是多少 輸出是空白也是一樣的道理 那 如果你指定b[0]的值是44 它就會輸出','了
我猜你不是開全域(因為開全域初始值設成0) 然後不是在全域,那他一開始會是什麼值呢? 這就要看你那一格記憶體的狀況了。。。
其實不一樣的IDE,會有不一樣的情況,不一定就是全域會自動指定值 = 0。有時候IDE甚至在debug的時候就強制叫你指定了