编程C本: 帖子 4 – 算术, 运营商在C中

今天的课程将向你介绍如何用C进行计算, 运营商能够处理更多的数据.

1. 数学运算符

C语言提供 5 基本的算术运算

STT 操作者 名字 结果
1 + 社区 3 + 4 7
2 10.5 – 3 7.5
3 * 员工 3 * 2 6
4 / 分享 6 / 3 2
5 % 除以平衡 8 % 3 2

行. 现在尝试做例子:

#include <stdio.h>

int main()
{
    int a = 5, b = 7;
    double c = 4.5, d = 6;

    printf("%d + %f = %f \n", a, c, a + c);
    printf("%d - %d = %d \n", a, b, a - b);
    printf("%d * %f = %f \n", b, d, b * d);

    /* Luu y phep chia nhe*/

    printf("%d / %d = %d \n", b, a, b / a);
    printf("%f / %d = %f \n", c, a, c / a);
    printf("%f / %f = %f \n", c, d, c / d);

    printf("%d %% %d = %d \n", b, a, b % a);

    return 0;
}

结果:

5 + 4.500000 = 9.500000
5 - 7 = -2
7 * 6.000000 = 42.000000
7 / 5 = 1
4.500000 / 5 = 0.900000
4.500000 / 6.000000 = 0.750000
7 % 5 = 2

其余运营商 (%) 需要两个操作数都是整数. 它返回除法的余. 例 7 % 5 除以整数计算 7 给 5 要 1 和余数为 2; 这样的结果是 2.

常见, 如果两个操作数都是整数,那么结果将是一个整数. 然而, 一个操作数的一个或两个为真,那么结果将是一个实数.

当两个操作数都是整数除法运算符,然后分工执行作为一个整数除法和分工是不正常的,我们使用. 整数除法总是受伤的自然结果. 例: 7 / 5 = 1 宁 7 / 5 = 1.4. 为了解决这个问题,我们可能会转让部分或全部 2 执行一些类型,​​然后进行分工. 如何转换 (或投) 它是如下:

(键入待转移) 变量.
首席执行官: (浮动) 该;

注意 虽然这是一个铸造原变量类型不会改变,仅瞬时值 (在那个时候改变到一个新的类型). 你需要声明一个类型的新变量转移和转让该值保存该立即值. 例如,对于易.

#include <stdio.h>

int main()
{
    int a = 5, b = 7;
    double c;

    printf("%d / %d = %d \n", b, a, b / a);

    /* Chuyen gia tri tuc thoi cua b sang kieu so thuc*/
    printf("%d / %d = %f \n", b, a, (double)b / a);

    /* Chuyen gia tri tuc thoi cua a sang kieu so thuc*/
    printf("%d / %d = %f \n", b, a, b / (double)a);

    /* Neu lam the nay thi van khong dung, vi b/a duoc so nguyen
     * sau do chung ta moi ep kieu so nguyen do sang so thuc
     */
    printf("%d / %d = %f \n", b, a, (double)(b / a));

    return 0;
}

结果:

7 / 5 = 1
7 / 5 = 1.400000
7 / 5 = 1.400000
7 / 5 = 1.000000

2. 关系运算符

C语言提供 6 关系运算来比较数. 关系运算符有价值 1 (正确的结果) 或 0 (当错误的结果).

STT 操作者 名字 结果
1 == 相比 5 == 5 1
2 != 比较其他 5 != 5 0
3 > 更大的比较 5 > 4 1
4 < 比较小 5 < 4 0
5 &GT; = 比较大于或等于 5 &GT; = 4 1
6 <= 比较小于或等于 5 <= 5 1

我们使用这些运营商比较值, 字符,然而... 不比较字符串连接在一起 因为这将导致该字符串的地址进行比较,而不是内容的字符串. 我们有功能的字符串库比较字符串,稍后将学习. 当与其他人物相比,那么我们就可以理解了计算机的本质的字符的ASCII代码放在一起进行比较. 首席执行官. 'A'&GT;'B'将返回值 0 为'A'的ASCII码 65 而“B”是 66.

3. 逻辑运算符

C所提供的 3 逻辑运算符,用于连接逻辑表达式. 就像关系运算符, 逻辑运算符具有值 1 或 0.

STT 操作者 名字 结果
1 ! ! (5 > 4) 0
2 && 5 > 4 && 5 > 6 0
3 || 5 > 4 || 5 > 6 1

4. 操作来增加或减少

运营商增加 (++) 并减少 (- -) 分别为方便起见提供加 1 在可变或负 1 从可变.

#include <stdio.h>

int main()
{
    int i, k;

    i = 5; k = i++;
    printf("i = %d, k = %d\n", i, k);

    i = 5; k = ++i;
    printf("i = %d, k = %d\n", i, k);

    i = 5; k = i--;
    printf("i = %d, k = %d\n", i, k);

    i = 5; k = --i;
    printf("i = %d, k = %d\n", i, k);

    return 0;
}

结果:

I = 6, K = 5
I = 6, K = 6
I = 4, K = 5
I = 4, K = 4

也就是说,我们有:

++我和 –i,那么在此之前将采取的结果来实现表达i被计算
我++和我– 然后我就被付诸实践之前,然后计算出我的新表情

5. 赋值运算符

赋值运算符是用来存储值 1 某些变量.

操作者 当量
= X = 5 分配 5 对于x
+= X = 5 X = X + 5
-= X - = 5 X = X - 5
*= X * = 5 X = X * 5
/= X / = 5 X = X / 5
%= X%= 5 X = X % 5

运行一些测试NHE.

#include <stdio.h>

int main()
{
    int x;

    x = 5;
    printf("x = 5 => x = %d\n", x);

    x += 5;
    printf("x += 5 => x = %d\n", x);

    x -= 5;
    printf("x -= 5 => x = %d\n", x);

    x *= 5;
    printf("x *= 5 => x = %d\n", x);

    x /= 5;
    printf("x /= 5 => x = %d\n", x);

    return 0;
}

结果:

X = 5 => X = 5
X = 5 => X = 10
X - = 5 => X = 5
X * = 5 => X = 25
X / = 5 => X = 5

6. 其他一些运营商

6.1 逗号操作

多个表达式可以使用逗号操作被连接到相同的表达. 逗号操作要求 2 操作. 首先,它估计左操作数,然后右键操作, 并返回右操作数的作为最终结果的值.
例:

#include <stdio.h>

int main()
{
    int m, t;

    m = (t =2, t*5 + 10);
    printf("t = %d, m = %d\n", t, m);

    return 0;
}

结果:

T = 2, M = 20

6.2 运营商采取的大小

C提供有用的运营商, 的sizeof, 以计算任何数据项或数据类型的大小. 它需要一个操作数可以是型号名称 (例, INT) 或表达 (例, 100) 并返回实体的以​​字节为单位指定的大小. 例如原型芽. 这个操作符,我们已经成为了数据类型,然后熟悉.

运行测试的例子:

#include <stdio.h>

int main()
{
    printf("char size = %d byte\n", sizeof(char));
    printf("short size = %d byte\n", sizeof(short));
    printf("int size = %d byte\n", sizeof(int));
    printf("long size = %d byte\n", sizeof(long));
    printf("float size = %d byte\n", sizeof(float));
    printf("double size = %d byte\n", sizeof(double));
    printf("1.55 size = %d byte\n", sizeof(1.55));
    printf("\"Hello\" size = %d byte\n", sizeof("Hello"));
    return 0;
}

结果:

字符大小= 1 字节
短尺寸= 2 字节
INT尺寸= 4 字节
长尺寸= 8 字节
浮动的大小= 4 字节
双尺寸= 8 字节
1.55 大小= 8 字节
“您好” 大小= 6 字节

7. 运营商优先

运营商的重点是从上做底如下表. 在每一行优先作为第一列 3.

操作者 优先顺序
后缀 () [] -> . ++ – – 左到右
一元 + – ! 〜 ++ – – (类型)* & 的sizeof 从右到左
* / % 左到右
合计 + – 左到右
<< >> 左到右
相对的 < <=>> = 左到右
平衡 == != 左到右
允许DNA位 & 左到右
XOR位 ^ 左到右
或者允许位 | 左到右
与逻辑允许 && 左到右
允许或逻辑 || 左到右
条件 ?: 从右到左
分配 = + = - = * = / =%= >> = <<= &= ^ = |= 从右到左
逗号 , 左到右

锻炼

  1. 写秒程序, 更改进入的秒数为“吉奥:砰:闪耀“, 每个分量是一个整数 2 数字. VD输入 7826 然后打印出 02:10:26

  2. 变量x = 3; 不要运行该程序, 猜x的执行后的值:
    X = ++ X - 3 + X;
    猜结束后,试着写一个程序来检查结果.