C如何處理整數和字符之間的轉換?假設你已經聲明瞭一個整型變量,並要求用戶輸入一個數字,但是他們輸入了一個字符串。會發生什麼?C整數和字符之間的兼容性
1
A
回答
6
用戶輸入被視爲需要使用atoi或其他轉換函數轉換爲int的字符串。如果字符串不能作爲數字插入,Atoi將返回0,因爲它包含字母或其他非數字字符。
你可以閱讀更多的在文檔的atoi MSDN上 - http://msdn.microsoft.com/en-us/library/yd5xkb5c(VS.80).aspx
0
該程序會崩潰,您需要調用atoi函數。
3
嗯? 你總是輸入一個字符串。然後你解析將這個字符串轉換爲數字,用各種方式(再次詢問,採取默認值等)處理各種錯誤(溢出,不正確的字符等)。
3
另外一點需要注意的是,在C,字符和整數是「兼容」到一定程度。任何字符都可以分配給一個int。反之亦然,但如果整數值不適合字符,則會丟失信息。
char foo = 'a'; // The ascii value representation for lower-case 'a' is 97
int bar = foo; // bar now contains the value 97
bar = 255; // 255 is 0x000000ff in hexadecimal
foo = bar; // foo now contains -1 (0xff)
unsigned char foo2 = foo; // foo now contains 255 (0xff)
3
正如其他人所指出的那樣,數據通常是以字符串的形式輸入的 - 唯一的問題是使用哪個函數進行讀取。如果您使用的是GUI,該功能可能已經以適當的方式處理轉換爲整數和報告錯誤。如果你使用的是標準C,通常讀取字符串的值比較容易(可能與fgets()
然後轉換)雖然可以使用atoi()
,但它很少是最好的選擇;麻煩在於確定轉換是否成功(和產生零,因爲用戶輸入的合法代表的零)或不
通常,使用strtol()
或其親屬(strtoul()
,strtoll()
,strtoull()
)中的一個;用於將浮點數,使用strtod()
或類似的功能。整數轉換例程的優點包括:
- 使用標準C約定(007表示八進制,0x07表示十六進制,7表示十進制),可選的基本選擇(例如,基數10或基數10 - 十六進制或基數8 - 八進制或上述任何一種。
- 可選錯誤檢測(通過知道轉換停止的位置)。
這些功能規範(當我不看我實際的C標準副本)時,我去的網站是POSIX網站(其中包含C99功能)。它以Unix爲中心而不是以Windows爲中心。
相關問題
- 1. javax.security.cert.X509Certificate和java.security.cert.X509Certificate之間的不兼容性
- 2. GCC和LLVM之間的兼容性
- 3. NLTK和Lucene之間Stemmers的兼容性
- 4. Protobuf和Protostuff之間的兼容性
- 5. Doxygen和DocBlox之間的兼容性
- 6. React.JS和java之間的兼容性
- 7. Crc32 .NET和php之間的兼容性
- 8. iPhone/iPad和Phonegap之間的兼容性
- 9. Unity 5.6.1f1和VS之間的兼容性
- 10. C++ 11和C++之間的庫兼容性03
- 11. C和Python之間的文件鎖定(flock)兼容性
- 12. VS2010和VS2012之間的二進制C++庫兼容性?
- 13. SQL Server 2005和2012與C++之間的兼容性
- 14. python字符串和C字符數組之間的相似性
- 15. Qt和Boost套接字庫之間的兼容性
- 16. 「密度兼容性」和「尺寸兼容性」之間的區別android
- 17. 2結構之間的兼容性
- 18. 編譯器之間的Dll兼容性
- 19. C#4和CLR兼容性
- 20. 發佈之後iOS7和iOS6之間的兼容性
- 21. 窗口和mac之間的Firefox和鉻兼容性的javascript
- 22. Postgres的字符串類型的兼容性:VARCHAR和字符
- 23. 關於C++和.NET兼容性的C#
- 24. DB2和jRuby on Rails Windows 7和Linux之間的OS兼容性
- 25. 在io :: stdio和BufReader之間強制BufRead特性兼容性
- 26. Java7和Java8之間的SSL不兼容?
- 27. Dropwizard和hive-jdbc之間的不兼容
- 28. 數字字符和字母之間的C++字符比較char
- 29. 對rails 2.3.5和rails之間的accepters_nested_attributes_for的兼容性2.3.8
- 30. 相同表格字段之間的兼容性