我是靠谱客的博主 坚定鸡,最近开发中收集的这篇文章主要介绍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语言基础 数据越界问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部