入门C语言——初识C语言
Posted 温蒂不吃糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门C语言——初识C语言相关的知识,希望对你有一定的参考价值。
一、引言
本系列文章主要内容主要是我对C语言的初步认识以及知识小结。
本文主要大概讲一讲操作符的基本知识点。
二、GET到的知识
操作符
(1)算数操作符:
操作符 | 功能 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余数 |
注意:若要除法后产生小数,则除号两边至少有一个浮点数。
(2)移位操作符(作用于二进制位):
操作符 | 功能 |
---|---|
<< | 左移 |
>> | 右移 |
下面介绍一下左移的操作方法(右移暂时不讨论,和左移有区别):
#include<stdio.h>
int main()
{
int a = 7;
//7的二进制形式是0111,由于a的数据类型是int,占用内存为32bit,如下
// |00000000000000000000000000000111|,那么将储存空间想象成一个格子,左移1以后,最左边的0被挤出去了,最右边会空出来一个位置。
// 0|0000000000000000000000000000111_|,将空出来的位置用0补上,那么新的二进制数为1110,即14。
int b = a << 1;
printf("%d", b);
return 0;
}
输出结果:
(3)位操作符:
操作符 | 功能 |
---|---|
& | 按二进制位与 |
^ | 按二进制位异或 |
| | 按二进制位或 |
用法:
#include<stdio.h>
int main()
{
int c = 3;//二进制形式为0101
int d = 5;//二进制形式为0111
int e = c & d;
int f = c ^ d;
int g = c | d;
//按位与(&):将两个数对应的二进制位进行对比,只要有0就记0,否则记1。
//c:00000000000000000000000000000011
//d:00000000000000000000000000000101
//e:00000000000000000000000000000001 即e = 1
printf("%d\\n",e);
//按位异或(^):将两个数的二进制位进行对比,相同记0,相异记1。
//c:00000000000000000000000000000011
//d:00000000000000000000000000000101
//f:00000000000000000000000000000110 即f = 6
printf("%d\\n", f);
//按位或(|):讲两个数的二进制位进行对比,只要有1就记1,否则记0。
//c:00000000000000000000000000000011
//d:00000000000000000000000000000101
//g:00000000000000000000000000000111 即g = 7
printf("%d\\n", g);
return 0;
}
输出结果:
(4)赋值操作符:
操作符 | 功能或解释 |
---|---|
! | 反逻辑操作符 |
- | 负值 |
+ | 正值 |
& | 取地址 |
sizeof | 操作数的类型长度(以字节为单位) |
~ | 对一个数的二进制按位取反 |
- - | 前置、后置-- |
++ | 前置、后置++ |
* | 间接访问操作符(解引用操作符) |
(类型) | 强制类型转换 |
<1>反逻辑操作符(!)
在C语言中0表示假,非0表示真,!可以将假变真,真变假。
若a = 2 ,则!a = 0;若a = 0 ,则a为真,此处规定,当假变真是,其值为1
举例
#include<stdio.h>
int main()
{
int a = 2,b = 0;
scanf("%d", &b);
if (!a == b)
{
printf("b为0");
}
else
{
printf("b为非0");
}
return 0;
}
<2>sizeof
用来计算数据类型占用的空间(单位:字节)
#include<stdio.h>
int main()
{
int a = 3;
printf("%d",sizeof a);//这里也可以写成 sizeof int
return 0;
}
<3>~
首先介绍一下整数在内存中储存方式:整数在内存中储存时,储存的是二进制数。一个整数的二进制表示有3中形式(原码,补码,反码)
正整数:原码,补码,反码相同
负整数:原码,补码,反码需要计算
有符号的整数最高位是0,表示正数;最高位是1,表示负数。
内存中存储正数时,存储的是二进制补码,计算时也采用补码。
下面为操作方法:
#include<stdio.h>
int main()
{
int a = -1;
//原码:10000000000000000000000000000001
//反码:11111111111111111111111111111110(符号位不变,其它位按位取反)
//补码:11111111111111111111111111111111(反码的二进制序列+1)
int b = 0;
//二进制序列:00000000000000000000000000000000
//按位取反后得到:11111111111111111111111111111111(补码) 该补码就是-1的补码,因此输出结果c=-1
int c = ~b;
printf("%d", c);
return 0;
}
输出如下:
<4>++、–(前置,后置)
以++为例(–同理)
若++在前则先++再使用,若++在后则先使用后++
具体如下:
#include<stdio.h>
int main()
{
int a = 2;
int b = 2;
int c = ++a;
int d = a++;
printf("c = %d\\n", c);
printf("a = %d\\n", c);
printf("b = %d\\n", b);
printf("d = %d\\n", d);
return 0;
}
输出如下:
很明显计算c时,a先自身加一再赋值给c;计算d时,b先赋值给d再自身加一。
<5>强制类型转换
示例
#include<stdio.h>
int main()
{
int a = 3.14;//将3.14强制转化为整型,直接舍去小数点后的数
printf("%d",a);
return 0;
}
输出如下
(5)关系操作符:
操作符 | 解释 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!= | 不等于 |
== | 等于 |
(6)逻辑操作符:
<1>逻辑与(&&)
二者都为真则为真,否则为假
<2>逻辑或(||)
二者有一个为真即为真,否则为假
示例:
#include<stdio.h>
int main()
{
int a = 0,b = 0;
scanf("%d%d",&a,&b);
if(a==0&&b==0)
{
printf("a和b同时为零");
}
else if(a==0||b==0)
{
printf("a或b其中有一个值为0");
}
return 0;
}
输出如下
(7)条件操作符:
形式 exp1?exp2:exp3
解释:exp1为真吗?如果是真的那就exp2,如果是假那就exp3。
示例:
#include<stdio.h>
int main()
{
int a = 10,b = 0;
b = ((a==5) ? 1 : -1 );
printf("%d",b);
return 0;
}
输出如下
(8)逗号表达式:
形式:exp1,exp2,exp3…expN
解释:逗号表达式使用时,从左向右依次计算,整个表达式的值取最后expN的值。
示例:
#include<stdio.h>
int main()
{
int a = 1, b = 2, c = -3;
int d = (a = b-2,b = a + c,c = a + b,c-=3);
printf("%d",d);
return 0;
}
输出如下
(9)下表引用、函数调用和结构成员
操作符 | 解释 |
---|---|
[ ] | 下表引用操作符 |
() | 函数调用操作符 |
另外还有 . 和 -> 两个操作符,暂时不讨论。
三、尾声
这两天的学习生活非常充实,学到了很多干货,当然本篇文章只是我对自身目前学到的知识的简单总结,很多地方都是简单一提,或多或少地可能有些错误,如果发现毛病的话欢迎评论区留言。如果你是和我一样的萌新,希望这篇文章对你有用,如果你、您是大佬,还请多多指教。
以上是关于入门C语言——初识C语言的主要内容,如果未能解决你的问题,请参考以下文章