2014-02-17 107 views
0

關於glassdoor的面試問題如下。憑我的知識,很難從中推斷出任何東西。什麼可能是一個合適的問題?關於鑄造-1 to size_t導致卡住的循環

計算size_t數字的宏。放入一個循環,它會將-1 轉換爲size_t數字,使循環無法啓動。

通過邁克爾亞倫Safyan建議的,以下可能是

在反向操作的情況下:

爲(我的size_t = 0; I>((爲size_t)-1);我 - ){}

爲了說明一看便知

+0

刪除它,給我幾分鐘 –

回答

2

問題是size_t是無符號,因此將-1賦值給它將產生最大值size_t。通過使用簽名類型(例如intssize_t)可以修復此案例。

+0

因此可能會有一個循環,將它轉換爲-1(即將其與-1相乘),使其達到其最大值,從而停止循環......類型正確? –

+0

我看到類似這樣的更常見的錯誤是向後迭代:for(size_t i = len - 1; i> = 0; i--){...}。在這些情況下,循環不會終止。但是我可以想象一些反過來操作的東西:for(size_t i = 0; i>((size_t)-1); i--){}。 –