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

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

我认为C语言是一切编程语言的基础,C生万物。我本科是软件工程,大一时早早就接触过C语言,但那时学习不够深入,学习方法也有很大问题,导致编程基础很差。现如今考研失败,决定开始重新系统学习编程,从C语言基础开始,笔记也只涉及C语言基础部分,不会涉及太深,因为我的学习方向是Java,接下来就是我的C语言学习笔记,绝不写半句废话,欢迎各位一起学习交流以及批评指正~
运算
#include 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 int main() { //利用取余运算符求整数最后一位 int x; scanf("%d",&x); printf("x最后一位是:%d\n",x%10); return 0; }

除法和取余运算的各种结果:
除法运算和取余运算的结果都是依赖于编译器的
  • 两个操作数都是正数时:任何编译器商和余数都是正数
  • 两个操作数至少有一个为负数时:结果取决于编译器
【C语言学习笔记_数据类型与运算】运算练习:
#include int main() { //读取两个整数,输出前者是后者的百分之几 int x,y; scanf("%d %d",&x,&y); //%.0f这种用法后面会讲到 //(double)是类型转换 后面也会讲到 printf("x是y的%.0f%%",((double)x/y)*100); return 0; }

单目运算符和三目运算符: ? 以上介绍的都是双目运算符,需要两个操作数,而单目运算符只需要一个操作数,三目操作数需要三个操作数。
? 常见的单目运算符有+、-、!、~
? 三目运算符会在后面的条件运算中介绍
#include int main() { int x = 10; //+运算符其实没有什么实际运算 只是为了对应-运算符而设置的 printf("%d",+x); //对符号进行取反操作 printf("%d",-x); //非运算符 后面会介绍 printf("%d",!x); //位取反运算符 后面会介绍 printf("%d",~x); return 0; }

  • C语言中“=”为赋值运算符,而“==”才为相等运算符
  • 程序中的一个语句都可以看做一个表达式,表达式必须要以;结尾,称为表达式语
数据类型
#include 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 int main() { int a,b; scanf("%d %d",&a,&b); //强制类型转换,格式为:(类型名)a,把a的值转换为指定数据类型对应的值 printf("%lf",(double)(a+b)/2); return 0; }

转换说明书写格式:
#include 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位

    推荐阅读