c語言main函數(shù)的參數(shù) main函數(shù)的參數(shù)argc,為什么不用unsigned int?
main函數(shù)的參數(shù)argc,為什么不用unsigned int?在C語言中,無符號的類型很少使用,即使不可能有負(fù)值。這與C不同。這樣做的好處之一是避免在執(zhí)行減法時溢出,從而導(dǎo)致無法檢測到的錯誤。例如,
main函數(shù)的參數(shù)argc,為什么不用unsigned int?
在C語言中,無符號的類型很少使用,即使不可能有負(fù)值。這與C不同。這樣做的好處之一是避免在執(zhí)行減法時溢出,從而導(dǎo)致無法檢測到的錯誤。例如,如果我想判斷argc是否大于或等于1,假設(shè)argc的類型是unsigned,并且我寫if(argc-1>=0){…},那么就會出現(xiàn)一個錯誤。因為不管argc是什么,因為有溢出,括號中的條件總是正確的。這種蟲子不容易找到。如果argc是有符號類型,這個問題可以避免
有兩種常見的方法來實現(xiàn)主體想要的功能。
一是傳遞參數(shù)。當(dāng)主函數(shù)調(diào)用子函數(shù)時,傳入相應(yīng)的參數(shù)。
一是使用全局變量。主函數(shù)的參數(shù)分配給全局變量,子函數(shù)讀取全局變量以進(jìn)行后續(xù)操作。這種方法涉及內(nèi)存共享,需要設(shè)計互斥的訪問場景。