C++中int的详细阐述

发布时间:2023-05-20

一、基础知识

1、int是C++中用于表示整数的数据类型之一。 2、int在内存中占据4个字节,范围为-2147483648~2147483647。 3、可以用sizeof()函数来求int类型在不同编译器下占用的字节数,例如:sizeof(int)。 4、int类型可以被赋予任何整数值,包括十进制、八进制和十六进制数字,例如:int a=10, b=012, c=0xA。 5、如果要输出int类型的值,可以使用cout<<或printf()函数进行输出。

#include<iostream>
using namespace std;
int main(){
   int a=12, b=045, c=0xC;
   printf("%d %d %d", a, b, c);
   return 0;
}

二、进制转换

1、C++中的int类型能够表示不同进制的整数,并且可以在进制之间进行转换。 2、将二进制、八进制和十六进制数字转换成十进制数字可以使用atoi()函数或sscanf()函数,例如:int a=atoi("1010")或sscanf("0xC", "%d", &a)。 3、将十进制数字转换成二进制、八进制和十六进制数字可以使用itoa()函数或sprintf()函数,例如:char binary[33]; itoa(10, binary, 2)或sprintf(binary, "%b", 10)。

#include<iostream>
#include <cstdlib>
using namespace std;
int main(){
   int a=atoi("1010");
   cout << a << endl;
   char binary[33];
   itoa(10, binary, 2);
   cout << binary << endl;
   return 0;
}

三、运算操作

1、int类型可以进行基本的算术运算操作,包括加减乘除和取模操作。 2、int类型也支持一些特殊的运算操作,比如按位与&、按位或|、按位异或^、按位取反~、左移<<和右移>>。 3、需要注意的是,在进行右移操作时,如果进行的是算术右移,则最高位(符号位)会被保留;如果进行的是逻辑右移,则最高位会被清零。

#include <iostream>
using namespace std;
int main(){
   int a=6, b=3;
   cout << a+b << " " << a-b << " " << a*b << " " << a%b << endl;
   cout << (a&b) << " " << (a|b) << " " << (a^b) << " " << (~a) << endl;
   cout << (a<<1) << " " << (a>>1) << endl;
   return 0;
}

四、类型转换

1、在C++中,int类型可以和其他数据类型之间进行自动或强制类型转换。 2、在进行自动类型转换时,整数类型之间的转换通常是安全的,但是浮点数类型之间的转换需要注意精度问题。 3、在进行强制类型转换时,可以使用强制类型转换符(static_cast、dynamic_cast、const_cast、reinterpret_cast)来实现。

#include <iostream>
using namespace std;
int main(){
   int a=6;
   double b=3.5;
   cout << (a/b) << endl;
   int c = static_cast<int>(b);
   cout << c << endl;
   return 0;
}

五、进位与溢出

1、在进行加法和乘法操作时,int类型可能会出现进位和溢出的情况。 2、当两个int类型的值相加结果超过了int类型的范围时,会发生溢出,结果会变成负值。 3、当两个int类型的值相乘结果超过了int类型的范围时,会发生进位,结果会截取高32位。

#include <iostream>
using namespace std;
int main(){
   int a=2147483647, b=2;
   cout << (a+b) << endl;
   cout << (a*b) << endl;
   return 0;
}