c++ - int variable is not able to store large values -


#include <iostream>  int main() {     int = 999999999999999999;     std::cout << << std::endl;     std::cout << 999999999999999999 << std::endl;     return 0; } 

the output of above program -1486618625 , 999999999999999999.

in both cout giving same number, why outputs different?

also long long int a=999999999999999 same int a=9999999999999999ll?

when assign integer literal 999999999999999999 int a, may truncated if int type not capable of representing number. maximum value can stored in int std::numeric_limits<int>::max() , depends on platform compiling (but must @ least 32767). compiler should warn such truncating assignment:

$ g++ -std=c++11 -wall -wextra    32689548.cpp   -o 32689548 32689548.cpp: in function ‘int main()’: 32689548.cpp:5:13: warning: overflow in implicit constant conversion [-woverflow]      int = 999999999999999999;              ^ 

to answer question, "[is] long long int a=999999999999999 same int a=9999999999999999ll" - why not test yourself? this, perhaps:

#include <iostream>  int main() {     long long int = 999999999999999999;     int b = 999999999999999999ll;     std::cout << << std::endl;     std::cout << b << std::endl;     std::cout << (a==b) << std::endl;     return 0; } 
$ g++ -std=c++11 -wall -wextra    32689548.cpp   -o 32689548 32689548.cpp: in function ‘int main()’: 32689548.cpp:6:13: warning: overflow in implicit constant conversion [-woverflow]      int b = 999999999999999999ll;              ^ 
$ ./32689548 999999999999999999 -1486618625 0 

here see assigning long long int b causes same truncation (as gcc warns will). however, if change int b auto b, no warnings , true comparison:

999999999999999999 999999999999999999 1 

for information, built , ran above on system has

std::numeric_limits<int>::max() = 2147483647 std::numeric_limits<long long int>::max() = 9223372036854775807 

Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -