我是靠谱客的博主 坚定鸡,这篇文章主要介绍C语言基础 数据越界问题,现在分享给大家,希望可以做个参考。

#include <iostream>
#include <bitset>
#include<cmath>

using namespace std;
int main()
{
    cout << "测试int转bool:" << endl;  //只有0才是false
    cout << (bool)3 << endl;       //1
    cout << (bool)0 << endl;       //0
    cout << (bool)-1 << endl;      //1
    cout << (bool)-3 << endl;      //1

    cout << (-1)/2 << endl; //0

    //算数移位(移动包含符号位,左移右补0, 右移左补符号位)
    cout << (1>>1) << endl; //0
    cout << (0>>1) << endl; //0

    // >=1073741824 左移时变负数
    cout << (1073741824<<1) << endl;    //-2147483648
    cout << (2147483646<<1) << endl;    //-4
    cout << (2147483647<<1) << endl;    //-2

    cout << bitset<32>(-1) << endl;     //11111111111111111111111111111111
    cout << bitset<32>((-1)>>31) << endl;  //11111111111111111111111111111111      左边补符号位
    cout << bitset<32>((-1)<<31) << endl;  //10000000000000000000000000000000      右移补0
    cout << (-2>>1) << endl;    //-1    右移除2
    cout << (-2<<1) << endl;    //-4    左移乘2

    //max 01111  2147484647
    //min 10000 -2147483647
    cout << INT32_MIN-1 << endl;    //max
    cout << INT32_MAX+1 << endl;    //min

    cout << INT32_MIN*(-1) << endl; //min
    cout << abs(INT32_MIN) << endl; //min
    cout << INT32_MIN/(-1) << endl; //min

    cout << "位运算:" << endl;
    cout << (3|4) << endl;      //7
    cout << (3||4) << endl;     //1  ||将左右两边理解为bool, int转bool 非0都是1

    return 0;

}

最后

以上就是坚定鸡最近收集整理的关于C语言基础 数据越界问题的全部内容,更多相关C语言基础内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(122)

评论列表共有 0 条评论

立即
投稿
返回
顶部