c语言---常量与运算符

常量与变量

字符

运算符

目录

常量与变量

字符

运算符


一、常量与变量

        常量的广义概念是:“不变化的量”(例如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量)换言之,常量,在计算机技术 方面虽然是为了硬件、软件、编程语言服务,但是它并不是专门为硬件、软件、编程语言而引入的概念。常量可区分为不同的类型,共有六种 整型常量、实型常量、字符常量、字符串常量、符号常量、地址常量,如:25、0为整型常量,6.8为实型常量,‘a’、‘b’为字符常量(用单引号括起来,英文下的),“abc”、“123”字符串常量(用双引号括起来,英文下的)。符号常量:用#define指令指定用一个符号代表一个常量。地址常量:每一个常量、变量、数组的地址在程序运行期间是不能够改变的,称为地址常量。

         变量:在程序运行中,值可以改变的量。变量代表一个有名字的、具有特定属性的一个存储单元,可以用来存储数据,也就是变量的值。变量必须先定义后使用。变量名的命名规则应符合标识符命名规则。标识符是用来标识和区分我们所定义的各种数据量,用来标识变量、常量、函数等的字符序列。标识符命名规则:只能由字母、数字、下划线“-”组成, 并且只能由字母和下划线开头。不 允许是关键字,同一个作用域范围内定义的标识符不允许重名。

二、字符

        字符包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。字符在计算机内存放,应规定相应的代表字符的二进制代码。代码的选用要与有关外围设备的规格取得一致。这些外围设备包括键盘控制台的输入输出、打印机的输出等等。字符作输入时,要自动转换为二进制代码存于机内;输出时,计算机内二进制代码自动转化为字符,两者的转换全是靠外围设备实现的。字符是数据结构中最小的数据存取单位。通常由8个二进制位(一个字节)来表示一个字符。其是数据结构中最小的数据存取单位。

三、运算符

        运算符包括以下几种:

算术运算符:(+-*/%++--)

关系运算符:(<<===>>=!=)

逻辑运算符:((!&&||)

位运算符 :(<<>>~|^&)

赋值运算符:(= 及其扩展)

条件运算符:(?:)

逗号运算符:(,)

指针运算符:(*&)

求字节数:(sizeof)

强制类型转换:(类型)

分量运算符:(.->)

下标运算符:([])

其它:(()-)

算术运算符

        (1)算术运算符:用于进行算术运算的特殊符号(+-*/%++--)。
算术运算符的基本使用:

运算符含义举例结果优先级结合性
+正号运算符+aa的值2 自右至左
-负号运算符-aa的算术负值2自右至左
*乘法运算符a*ba和b的乘积 3自左至右
/除法运算符a/b a除以b的商3自左至右
% 求余运算符 a%ba除以b的余数3自左至右
+加法运算符a+ba和b的和4自左至右
-减法运算符a-ba和b的差4自左至右

优先级:运算按照 优先级来算,我们平常熟知的是先算乘除再算加减就是按照优先级来计算的,这里的运算亦是如此。

这里说一下结合性,运算符的结合性指同一优先级的运算符在表达式中操作的组织方向, 即: 当一个运算对象两侧运算符的优先级别相同时, 运算对象与运算符的结合顺序, C 语言规定了各种运算符的结合方向( 结合性) 。大家可以记住一个规律,单目运算符(一元运算符只对一个表达式执行操作,该表达式可以是数值数据类型类别中的任何一种数据类型,例如正负号就是单目运算符)、条件运算符和赋值运算符是自右至左结合的,其他算术运符都是自左至右结合的。

        这里先说%  模 求余,例如7%4的输出结果为3

#include <stdio.h>
int main()
{

    printf("%d\n",7%4);//结果为3



    return 0;


}

        加减乘除不用做过多解释

#include <stdio.h>
int main()
{

    
    printf("%d\n",7*4);//结果为28
    printf("%d\n",28/4);//结果为7


    return 0;


}

(2)自增自减运算符:

自增运算符是两个+连起来的符号(++),作用是使变量的值加一。
自减运算符是两个-连起来的符号(--),作用是使变量的值减一。如下,

#include <stdio.h>
int main()
{
	int a=8;
	a++;//为9后缀
	a--;//为7后缀
    ++a;//为9前缀
    --a;//为7前缀
	printf ("%d\n" ,++a);//结果为9 
	printf("%d\n",--a);//结果为7 
	
    return 0;


}

前缀:先自增再参与运算。

后缀:先参与运算再自增。如下,

#include <stdio.h>
int main()
{
	int a=8;
	//int b=++a;
	int c=a++;
	//printf ("%d\n" ,b);//结果为9 
	printf ("%d\n" ,c);//结果为8 
	
    return 0;


}

关系运算符

        二关系运算符:关系运算符比较运算符两边的表达式的大小关系,其运算过后产生的结果为逻辑值,要么关系表达式为真(逻辑真),运算结果为非0值,要么表达式为假(逻辑假),运算结果为0。

关系运算符含义优先级结合性
<小于6自左至右
<=小于等于6自左至右
>大于6自左至右
>=大于等于6自左至右
==等于7自左至右
!=不等于7自左至右

        在这里“==”表示等于,而“=”表示赋值的意思。“!=”表示不等于,“>=”表示大于等于,“<=”表示小于等于。与数学中的表示符号有所不同。

#include <stdio.h>
int main()
{
	//如果正确即真输出为1,错误即假输出为0,(1代表真,0代表假)输出的结果就这两种 
	int k=4>3;//此结果为1 
	
	int m=4!=4; //此结果是0 
	
	printf ("%d\n %d\n",k,m);
	
	
    return 0;


}

逻辑运算符

        逻辑运算符:有与(&&)、或(||)、非(!!)3种。逻辑运算符用干判断运算符两边的表达式的逻辑关系,一般用干连接多个条件表达式。

运算符含义举例说明优先级结合性
&&逻辑与a&&ba,b都为真则为真11自左至右
||逻辑或a||ba,b有一个真则为真12自左至右
逻辑非!aa为真,则!a为假2自左至右

#include <stdio.h>
int main()
{
	int a=8,b=9;
	
	//int c=(a>10)&&(b<10);//此结果为假,一真一假,则为假, 
	

    //括号可以不加,优先级不同
	//int c=(a>10)||(b<10);//此结果为真
	
	
    int c=a>b; //为假 
	//int c= !(a>b); //为真
	
	printf ("%d\n",c);
	printf ("%d\n",c); 
	
	
    return 0;


} 

位运算符

        1、位运算符。
        位运算符是针对数据的二进制进行运算的,其中包含左移"<<"、右移">>"、按位非"~"、按位或"|"、按位与"&"、按位异或"^"这六种位运算,其只能对整型数据操作。
        2、位运算符的基本使用
        ①左/右移运算符("<<"、">>"),基本格式:整数<<n、整数>>n,其用于将一个整数的二进制向左/向右移动n个二进制位。
        ②按位非运算符"~",基本格式:~整数,用于将一个整数的二进制各位取反,1变0,0变1。
        ③按位或''|"和按位与'&' 基本格式:整数整数、整数&整数,用于将两个整数的各位二进制相或/相与。
        ④按位异或'^',基本格式:整数^整数,用于将两个整数的二进制相异或。遵循相同为0,相异为1的规则。

        左移:<<左移相当于乘以2的n次方,移几位就乘以2的几次方。

        右移:>>右移相当于除以2的n次方,移几位就除以2的几次方。

        移动的是二进制位,一个字节=八位

        0000 0000

        int 占位4字节即  0000 0000 0000 0000 0000 0000 0000 0000

        int 10就为 0000 0000 0000 0000 0000 0000 0000 1010   (一般写为0000 1010 前面的零无意义省略不写)。

        如果左移1位就是 0001 0100(最后的用0填位)。以此类推,右移同样。

#include <stdio.h>
int main()
{
	//int a=10;
	
	//printf ("%d\n",a<<1);//为20
	 
	//printf ("%d\n",a<<2);//结果为40. 
	
	
	int a=40; 
	
	//printf ("%d\n",a>>1);//结果为20 
	printf ("%d\n",a>>2);//结果为10 
	
	
	
    return 0;


} 

按位非:~  二进制1变0,0变1.二进制最高位为符号位 0为正数,1为负数。

二进制数:原码 反码 补码
 正数原码:0000 0000 0000 0000 0000 0000 0000 1010

        反码: 0000 0000 0000 0000 0000 0000 0000 1010

        补码: 0000 0000 0000 0000 0000 0000 0000 1010 

负数原码: 1000 0000 0000 0000 0000 0000 0000 0001

        反码:1111 1111 1111 1111 1111 1111 1111 1110

补码=反码+1  1111 1111 1111 1111 1111 1111 11111

此处不多做解释.

#include <stdio.h>
int main()
{
	int a=10;
	
	printf ("%d\n",~a);//结果为-11 
	
	
	
    return 0;


} 

        按位与:|    对应位置有1则为1,否则为0 

#include <stdio.h>
int main()
{
	int a=4;
	
	int b=3; 
	
	
	//0000 0100
	//0000 0011
	//0000 0111=7
	
	printf ("%d\n",a|b);//结果为7 
	
	
	
    return 0;


} 

        按位或  & 对应位置都为1则为1否则为

#include <stdio.h>
int main()
{
	//int a=4;//0000 0100
	
	//int b=3;//0000 0011
	//a&b;	  //0000 0000
	
			
	//printf ("%d\n",a&b);//结果为0
	
	
	int a=7;//0000 0111
	int b=6;//0000 0110
	a&b;	//0000 0110
	
		
	printf ("%d\n",a&b);//结果为6 
	
	
    return 0;


} 

        按位异  ^ 对应位置,相同为0,不同为1

#include <stdio.h>
int main()
{
	int a=6;//0000 0110
	
	int b=4;//0000 0100
	
	a^b		//0000 0010=2
	
	
	
	
		
	printf ("%d\n",a^b);//结果为2
	
	
    return 0;


} 

        赋值运算符:赋值运算符:赋值符号 就是赋值运算符,用于给变量赋值,和算术运算符组合可以构成复合赋值运算符。

        

赋值运算符优先级结合性
=14自右至左
+=14自右至左
-=14自右至左
*=14自右至左
/=14自右至左
%=14自右至左
#include <stdio.h>
int main()
{
	int a=6;
	//=表示赋值 
	int b=4;
	//a+=b;//a=a+b
	//a-=b;//a=a-b
	//a*=b;//a=a*b
	//a/=b;//a=a/b
	//a%=b;//a=a%b
	
	
		
	printf ("%d\n",a);
	
	
    return 0;


} 

逗号运算符  ,

#include <stdio.h>
int main()
{
	int a=(1,2,3,4,5,6,7);
    //将1,2,3,4,5,6,7,依次赋值给a,直到7,最终为7  
		
	printf ("%d\n",a);
	
	
    return 0;


} 

强制运算符:()

#include <stdio.h>
int main()
{
	double b=(int)'a';

		
	printf ("%lf\n",b);
	
	
    return 0;


} 

        条件运算符:表达式1?表达式2:表达式3

        表达式的结果为真,执行表达式2,否则执行表达式3

#include <stdio.h>
int main()
{
	int a=10;
	int b=2;
	


	
	printf ("%d\n",a>b?a:b);
	
	
    return 0;
 
 
}  

        sizeof():求类型大小

#include <stdio.h>
int main()
{
	
	
	printf ("%d\n",sizeof(11));//4
	printf ("%d\n",sizeof (float));//4
	printf ("%d\n",sizeof (char));//1
	
    return 0;


} 

操作数:一个运算符要用到几个变量计算,比如用到两个叫做双目

表达式:

1、表达式的含义以及组成:用运算符和括号将运算对象(也叫操作数)连接起来的、符合C语言语法规则、用于相关运算的式子,称为C语言表达式。运算对象包括常量、变量、函数等。
2、示例:例如一个合法的算术表达式:a*b/c-1.5+'a"

3、执行规则:在计算表达式的值时,应先按运算符的优先级别顺序执行,例如先乘除再加减。存在同一级别的运算符做运算时,则需要看运算符的结合性。(同一级别的运算符结合性是一致的,可以用小括号改变运算的优先级)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值