问题描述
我不知道为什么会这样.
我在WMI中读取我的1TB硬盘驱动器大小,并以[1000202039296]为单位给出了正确的结果.现在,如果我在此char上使用atoi,则可以对其进行其他数学运算并将其转换为MB和GB,但是当我使用atoi时,我会得到[2147483647].
这是我的代码:
Hi I don''t get why this is happening.
Im reading my 1tb hard drive size in WMI and its giving the correct result in bytes of [1000202039296]. Now if i use atoi on this char so i can do other math on it and convert it to MB and GB, but when i use atoi i get [2147483647].
Here''s my code:
char TotalSpace[50];
ReadPropertyString( L"Size", TotalSpace );
printf( "[%s]", TotalSpace );
printf( "[%i]", atoi( TotalSpace ) );
这给了我上面的结果:
[1000202039296]
[2147483647]
谁能解释为什么会发生这种情况,并可能解决此问题?
This gives me the reults as above:
[1000202039296]
[2147483647]
Can anyone explain why this is happening and a possible fix please?
推荐答案
char TotalSpace[50] = "1000202039296";
printf( "[%s]\n", TotalSpace );
printf( "[%llu]\n", _atoi64( TotalSpace ) );
输出:
[1000202039296]
[1000202039296]
Output:
[1000202039296]
[1000202039296]
这篇关于C ++使用atoi将char数组转换为int的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!