入门C语言——初识C语言

Posted 温蒂不吃糖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门C语言——初识C语言相关的知识,希望对你有一定的参考价值。

一、引言
本系列文章主要内容主要是我对C语言的初步认识以及知识小结。
本文主要大概讲一讲操作符的基本知识点。

操作符

(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语言的主要内容,如果未能解决你的问题,请参考以下文章

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

入门C语言——初识C语言

C++基础入门丨1. 初识C++像极了C语言