关于c:C语言学习笔记数据类型与运算

2次阅读

共计 2125 个字符,预计需要花费 6 分钟才能阅读完成。

C 语言学习笔记_数据类型与运算

我认为 C 语言是所有编程语言的根底,C 生万物。我本科是软件工程,大一时早早就接触过 C 语言,但那时学习不够深刻,学习办法也有很大问题,导致编程根底很差。现如今考研失败,决定开始从新零碎学习编程,从 C 语言根底开始,笔记也只波及 C 语言根底局部,不会波及太深,因为我的学习方向是 Java,接下来就是我的 C 语言学习笔记,绝不写半句废话,欢送各位一起学习交换以及批评指正~


运算

#include<stdio.h>
int main()
{
    int x,y;
    scanf("%d %d",&x,&y);
    // 加减运算符
    printf("%d",x+y);
    printf("%d",x-y);
    // 乘除运算符
    // 整数的除法运算只取商的整数局部,主动舍弃小数点局部
    printf("%d",x*y);
    printf("%d",x/y);
    // 取余运算符
    // 取余运算的操作数只能是整数(负整数取余没有意义)printf("%d",x%y);
    return 0;
}
  • 像 +、-、*、/、% 这样能够进行运算的符号称为运算符,参加运算的变量或常量称为操作数
  • 用 printf 函数输入 ”%” 这个符号的化,格式化字符串中要写 %%;因为 % 有转换阐明的性能,当不须要进行转换阐明,只想输入 % 的时候,就要写成 %%

取余运算符的利用:

#include<stdio.h>
int main()
{
    // 利用取余运算符求整数最初一位
    int x;
    scanf("%d",&x);
    printf("x 最初一位是:%d\n",x%10);
    return 0;
}

除法和取余运算的各种后果:

除法运算和取余运算的后果都是依赖于编译器的

  • 两个操作数都是负数时:任何编译器商和余数都是负数
  • 两个操作数至多有一个为正数时:后果取决于编译器

运算练习:

#include<stdio.h>
int main()
{
    // 读取两个整数,输入前者是后者的百分之几
    int x,y;
    scanf("%d %d",&x,&y);
    //%.0f 这种用法前面会讲到
    //(double)是类型转换 前面也会讲到 
    printf("x 是 y 的 %.0f%%",((double)x/y)*100);
    return 0;
}

单目运算符和三目运算符:

​ 以上介绍的都是双目运算符,须要两个操作数,而单目运算符只须要一个操作数,三目操作数须要三个操作数。

​ 常见的单目运算符有 +、-、!、~

​ 三目运算符会在前面的条件运算中介绍

#include<stdio.h>
int main()
{
    int x = 10;
    //+ 运算符其实没有什么理论运算 只是为了对应 - 运算符而设置的
    printf("%d",+x);
    // 对符号进行取反操作
    printf("%d",-x);
    // 非运算符 前面会介绍
    printf("%d",!x);
    // 位取反运算符 前面会介绍
    printf("%d",~x);
    return 0;
}
  • C 语言中“=”为赋值运算符,而“==”才为相等运算符
  • 程序中的一个语句都能够看做一个表达式,表达式必须要以;结尾,称为表达式语

数据类型

#include<stdio.h>
int main()
{
    //int 为整型变量,将 9.99 赋给 x 时,小数局部将会被抛弃,此时 x =9
    int x = 9.99;
    //double 为浮点型变量
    double y = 9.99;
    // 后果为 4
    printf("%d\n",x/2);
    // 后果为 4.995000
    printf("%lf\n",y/2);
    return 0;
}
  • printf 函数输入 int 型值的时候,转换阐明应用 %d
  • printf 函数输入 double 型值的时候,转换阐明应用 %lf,%lf 默认显示小数点后六位数字
  • int 类型只能用来存储整数,即便把实数赋值给它,也只能保留整数局部
  • double 类型能够用来存储蕴含小数的实数

数据类型之间的运算:

  • 进行整数 / 整数运算时,商的小数局部被舍弃,浮点数之间的运算则不会舍弃小数局部
  • “int/int”与“double/double”这样两个雷同类型的操作数之间的运算,所得后果数据类型放弃不变
  • “double/int”或“int/double”两个不同类型操作数之间的运算,int 类型的操作数会进行隐式类型转换,主动向上转换为 double 型,运算演变成 double 类型之间的运算,所得后果也为 double 类型。这样的规定对于 +、* 等其余运算也实用

强制类型转换:

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    // 强制类型转换,格局为:(类型名)a,把 a 的值转换为指定数据类型对应的值
    printf("%lf",(double)(a+b)/2);
    return 0;
}

转换阐明书写格局:

#include<stdio.h>
int main()
{
    int a,b;
    int sum;
    double ave;
    scanf("%d %d",&a,&b);
    sum = a+b;
    ave = sum/2;
    printf("他们的总和为 %05d\n",sum);
    printf("他们的平均值为 %05.4f\n",ave);
    return 0;
}
  • %05d 示意显示至多 5 位的十进制整数,0 标记代表如果数值后面有空位用 0 补齐,若没有 0 标记则用空格补齐
  • %05.4f 示意显示至多 5 位的浮点数,然而小数点后只显示 4 位
正文完
 0