原创

C/C++语言基础

一、类型

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

基本语法
  • 作者:HunterArley (联系作者)
  • 发表时间:2020-08-26 17:41
  • 版权声明:本网站部分内容转载于合作站点或其他站点,但都会注明作/译者和原出处。如有不妥之处,敬请指出。
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论