C语言操作符(上)(二)

简介: C语言操作符(上)

5. 赋值操作符


赋值操作用于给变量初始化或者改变变量的值。


int a = 10; //初始化
a = 20;  //赋值


赋值操作也能写作复合形式:


int a = a+1; 写做int a += 1;


int a = a>>1;写做 int a >>= 1;


……


6. 单目操作符


概念:只有一个操作数的操作符称之为单目操作符。


主要的单目操作符:逻辑反(!),取地址(&),操作符的类型长度(sizeof),强制类型转换(一对小括号)……


6.1 sizeof操作符


#include <stdio.h>
int main()
{
     int a = -10;
     int *p = NULL;
     printf("%d\n", !2);
     printf("%d\n", !0);
     a = -a;
     p = &a;
     printf("%d\n", sizeof(a));
     printf("%d\n", sizeof(int));
     printf("%d\n", sizeof a);//这样写行不行?
     printf("%d\n", sizeof int);//这样写行不行? 不可!会报错
     return 0;
}
//关于sizeof其实我们之前已经见过了,可以求变量(类型)所占空间的大小。


6.2 sizeof和数组


#include <stdio.h>
void test1(int arr[])
{
     printf("%d\n", sizeof(arr));//(2) 打印4/8
}
void test2(char ch[])
{
     printf("%d\n", sizeof(ch));//(4) 打印4/8
}
int main()
{
     int arr[10] = {0};
     char ch[10] = {0};
     printf("%d\n", sizeof(arr));//(1)  打印40
     printf("%d\n", sizeof(ch));//(3)   打印10
     test1(arr);
     test2(ch);
     return 0;
}


注意:


  1. 当sizeof的括号内是数组名是算出的是整个数组的字节大小。
  2. 数组传参传递的是数组首元素的地址。所以在test1函数和test2函数中计算的是指针变量的大小,而指针变量的大小在32位平台下占用的空间是4个字节,在64位平台占用的是8个字节。
  3. sizeof后的括号可以去掉就说明sizeof并不是函数。因为函数的调用必须要括号。
  4. 在数组中去掉名字,剩下的就是数组的类型。例如:数组int arr[10];的类型就是 int [10]


当scanf读取失败时,返回的时EOF,值是-1,-1的补码全为1,可以通过以下的代码实现多组输入。


int main()
{
  int a = 0;
    //假设返回EOF,其二进制序列全是1,取反之后全是0,条件为假,退出循环。
  while(~scanf("%d",&a))
  {
  printf("%d ",a);
  }
  return 0;
}


7. 关系操作符


关系操作符较为简单。


8.逻辑操作符


主要有两个 && (与)和 ||(或)。


注意:这里要与按位与和按位或做区分。


1&2----->0
1&&2---->1
1|2----->3
1||2---->1


先看一道题:


int main()
{
    int i = 0,a=0,b=2,c =3,d=4;
    i = a++ && ++b && d++;
    //i = a++||++b||d++;
    printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
    return 0;
}


执行结果:


7da5f66355aea3d810282e39e525fd07_af05e8379d4f4ecdbf91cdfbd228f5ec.png


分析:代码第4行a++ 表达式的结果是0,也就是假,对于逻辑与来讲,只要遇到执行结果为假的表达式,该语句之后的代码则不会再执行了。


逻辑与和逻辑或的特点:逻辑与和逻辑或会发生“短路现象”。


对于逻辑与来讲,倘若遇到执行结果为假的表达式,则该语句之后的表达式就不会再继续执行了。


对于逻辑或来讲,倘若遇到执行结果为真的表达式,则该语句之后的表达式就不会再继续执行了。


9. 条件操作符


exp1 ? exp2 : exp3


条件操作符与 if else语句可以相互转换。


Q3:


if (a > 5)
        b = 3;
else
        b = -3;
转换成条件表达式,是什么样? //  b = (a>5)?3:-3;


10. 完结


本章的内容就到这里啦,若有不足,欢迎评论区指正,最后,希望大佬们多多三连吧,下期见!


相关文章
|
3月前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
72 0
|
3月前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
237 0
|
15天前
|
存储 缓存 C语言
【c语言】简单的算术操作符、输入输出函数
本文介绍了C语言中的算术操作符、赋值操作符、单目操作符以及输入输出函数 `printf` 和 `scanf` 的基本用法。算术操作符包括加、减、乘、除和求余,其中除法和求余运算有特殊规则。赋值操作符用于给变量赋值,并支持复合赋值。单目操作符包括自增自减、正负号和强制类型转换。输入输出函数 `printf` 和 `scanf` 用于格式化输入和输出,支持多种占位符和格式控制。通过示例代码详细解释了这些操作符和函数的使用方法。
30 10
|
1月前
|
存储 编译器 C语言
【C语言】简单介绍进制和操作符
【C语言】简单介绍进制和操作符
152 1
|
1月前
|
存储 编译器 C语言
初识C语言5——操作符详解
初识C语言5——操作符详解
163 0
|
3月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
45 6
|
3月前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
56 0
十一:《初学C语言》—  操作符详解(上)
|
4月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
43 1
五:《初学C语言》—  操作符
|
5月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
5月前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
40 1