美文网首页c/c++
C与C++语言基础

C与C++语言基础

作者: 程序员丶星霖 | 来源:发表于2020-08-25 17:48 被阅读0次

    一、类型

    int a;
    

    变量是装数据的容器,数据会变,容器不会变。

    变量在使用前先定义,其定义格式:

    变量类型名 变量名1,变量名2...;

    int a = 0;//初始化
    int b,c,d;
    

    变量名

    1. 是由字母和数字组成的序列,但第一个字符必须为字母;
    2. 大小写字母是有区别的;
    3. 关键字,已被语言本身占有,不能做为变量名。

    C语言有且仅有的四种基本类型:

    • int整型,用来装整数,长度由所在机器而定,通常占4各字节。
    • char字符型,占用一个字节的长度,可以存放一个字符。
    • float单精度浮点型,
    • double双精度浮点型,
    #include <iostream>
    using namespace std;
    
    int main() {
        cout << sizeof(int) << std::endl;
        return 0;
    }
    
    施加在基本类型上的限定符
    short int a;// int可省略不写
    
    long int b;// int可省略不写
    

    short限定符尽可能的使int变短,long尽可能的使int变长。

    short和int类型不小于16位,int型可以是16位和32位,long类型不小于32位,具体由所在机器而定。

    signed与unsigned可用来限定char型和所有整型(包括被short和long限定过的整型)。

    signed整型等价于整型
    unsigned整型使得原有整型长度不变,符号位变成数据位,仅能表示0和正数。

    注意:
    signed char强制char可以存储有符号整数,unsigned char强制char可以存储无符号整数,char不加任何限定,则是否有符号根据所在机器而定。

    整数常量也可以用八进制或十六进制表示:

    c = a + 13;
    
    c = a + 013; // 0开头代表八进制
    
    c = a + 0x13;// 0x开头代表十六进制
    
    

    示例如下:

    #include <iostream>
    using namespace std;
    
    int main() {
        cout << 31 << endl;
        cout << 037 << endl;
        cout << 0x1f << endl;
        return 0;
    }
    

    输出:

    31
    31
    31
    

    字符常量,需要用单引号将字符扩起来:

    #include <iostream>
    using namespace std;
    
    int main() {
        cout << 1+'0' << endl;
        return 0;
    }
    

    输出:

    49
    

    字符常量也可以参与运算,实际是其对应的ASCII码参与运算。

    字符串常量:
    用双引号包裹起来的>=0个的字符组成的序列为字符串常量:

    
    "我是一个字符串"    
    ""
    
    

    字符串中的"用转义字符"表示。

    多个字符串可以拼接。

    #include <iostream>
    using namespace std;
    
    int main() {
        cout << "I am a string" << endl;
        cout << "I am a"      " string" << endl;
        return 0;
    }
    

    输出结果为:

    I am a string
    I am a string
    

    转义字符:

    转义字符 含义
    \a 响铃符
    \ 反斜杠
    \b 回退符
    ? 问号
    \f 换页符
    ` 单引号
    \n 换行符
    " 双引号
    \r 回车符
    \ooo 八进制数
    \t 横向制表符
    \xhh 十六进制数
    \v 纵向制表符
    \0 字符串结束的标识

    二、运算符

    2.1、算数运算符

    % + - * /

    **% **

    x % y结果是x除以y的余数部分。
    x和y必须是整型操作数。
    在有负操作数的情况下,取模运算结果的符号取决于具体机器的实现。

    /

    整数除法会截断结果中的小数部分。

    ++ 自增运算符

    -- 自减运算符

    #include <iostream>
    using namespace std;
    
    int main() {
        float x = 1.1;
        float y;
        y = x++;
        cout << x << endl;
        cout << y << endl;
        return 0;
    }
    

    输出结果:

    2.1
    1.1
    
    #include <iostream>
    using namespace std;
    
    int main() {
        float x = 1.1;
        float y;
        y = ++x;
        cout << x << endl;
        cout << y << endl;
        return 0;
    }
    

    输出结果:

    2.1
    2.1
    

    ++x:先让x自增1,再返回x的值;

    x++:先返回x的值,再让x自增1;

    2.2、关系运算符

    ><>=<===!=

    x > y : x大于y返回真,否则返回假。

    在C语言中,0表示假,非0表示真。

    #include <iostream>
    using namespace std;
    
    int main() {
        int x = 1,y = 2,z;
        z = x>y;
        cout << z << endl;
        z = x<y;
        cout << z << endl;
        return 0;
    }
    

    输出结果:

    0
    1
    

    2.3、逻辑运算符

    &&||!

    #include <iostream>
    using namespace std;
    
    int main() {
        int x = 1,y = 0,z;
        z = x&&y;
        cout << z << endl;
        y = 1;
        z = x&&y;
        cout << z << endl;
        return 0;
    }
    

    输出结果:

    0
    1
    

    2.4、赋值运算符

    =+=-=、 *=/=%=

    a += 10;
    等价于:a = a+10;

    2.5、位运算符

    & 按位与、 | 按位或、 << 左移、 >> 右移、 ~ 按位取反、 ^ 按位异或

    左移操作

    #include <iostream>
    using namespace std;
    
    int main() {
        short int x = -178;
        short int y = x<<1;
        cout << bitset<sizeof(x)*8>(x) << endl;
        cout << bitset<sizeof(y)*8>(y) << endl;
        return 0;
    }
    

    输出结果:

    1111111101001110
    1111111010011100
    

    按位取返:

    #include <iostream>
    using namespace std;
    
    int main() {
        short int x = -178;
        short int y = ~x;
        cout << bitset<sizeof(x)*8>(x) << endl;
        cout << bitset<sizeof(y)*8>(y) << endl;
        return 0;
    }
    

    输出结果:

    1111111101001110
    0000000010110001
    

    按位异或:

    #include <iostream>
    using namespace std;
    
    int main() {
        short int x = -111;
        short int y = 234;
        short int z = x^y;
        cout << bitset<sizeof(x)*8>(x) << endl;
        cout << bitset<sizeof(y)*8>(y) << endl;
        cout << bitset<sizeof(z)*8>(z) << endl;
        return 0;
    }
    

    输出结果:

    1111111110010001
    0000000011101010
    1111111101111011
    

    2.6、其他运算符

    sizeof 运算符

    用法:

    sizeof(数据类型、变量或常量)

    问号运算符(三目运算符)

    <表达式1> ? <表达式2> : <表达式3>

    #include <iostream>
    using namespace std;
    
    int main() {
        int x = 1;
        int y = 2;
        cout << (x>y ? 'A' : 'B') << endl;
        x = 2;
        y = 1;
        cout << (x>y ? 'A' : 'B') << endl;
        return 0;
    }
    

    输出结果:

    B
    A
    

    表达式1为真,则返回表达式2,否则返回表达式3。

    2.7、类型转换

    1、自动转换

    赋值语句中的自动转换:

    #include <iostream>
    using namespace std;
    
    int main() {
        float a = 100.5;
        int b = a;
        cout << b << endl;
        return 0;
    }
    

    输出结果:

    100
    

    混合运算中的自动转换:

    #include <iostream>
    using namespace std;
    
    int main() {
        short int a = 1;
        int b = 1;
        float c = 1.0;
        double d = 1.1;
    
        cout << sizeof(a) << endl;
        cout << sizeof(a+b) << endl;
        cout << sizeof(a+b+c) << endl;
        cout << sizeof(a+b+c+d) << endl;
        return 0;
    }
    

    输出结果:

    2
    4
    4
    8
    

    数据位少的向数据位多的转换。

    自动转换
    2、强制转换

    (类型名)表达式

    (float)a; // 将变量a转换为float类型。
    (int)(c+d); // 将表达式c+d的结果转换成int型。

    注意:

    类型转换只体现在结果上,并不会改变被转换变量的类型。

    学海无涯苦作舟

    个人博客:http://www.coderlearning.cn/

    我的微信公众号.jpg

    相关文章

      网友评论

        本文标题:C与C++语言基础

        本文链接:https://www.haomeiwen.com/subject/ibrzjktx.html