C语言单目操作符

C语言单目操作符

运算符含义
!逻辑取反操作
负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位取反
––前置、后置–
++前置、后置++
*间接访问操作符(解引用操作符)
(类型)强制类型转换

1. 逻辑反操作 !

​ 在C语言中真和假分别使用 0 和 非0 来表示。

​ !即将假变为真,将真变为假

#include <stdio.h>
//在C语言中真和假分别使用 0 和 非0 来表示
int main(){
    int num1 = 0;
    int num2 = 10;
    printf("%d\n", num1);  //显然这里将会打印0
    
    printf("%d\n", !num1);  //逻辑取反操作后这里将会打印1(C语言规定)
    //那么若number为非零数,! 取反操作后将会变为1,表示为假
    printf("%d\n", num2);  //输出结果为10
    printf("%d\n", !num2);  //输出结果为0
}

2.负值操作 - 和正值操作 +

#include <stdio.h>
//将数字进行取负号操作
int main(){
    int num1 = 100;
    int num2 = -num1;  //显然num2的值即为-100
    printf("%d\n", num2);
    //C语言中+号并不会反转,在实际中很少出现
}

3.sizeof

​ 表示计算出大小,那么可计算的对象是其所占内存空间的大小

注意sizeof并不是函数,并且在使用中必须使用圆括号 ()

#include <stdio.h>
int main(){
    int a = 10;  //a在内存空间中占4个字节
    printf("%d\n", sizeof(a));
    printf("%d\n", sizeof(int));  //也可以计算类型大小(单位:字节Byte)
    
    printf("hello world!\n");
	printf("%d\n", sizeof(char));  //1 (字节)
	printf("%d\n", sizeof(int));  //4
	printf("%d\n", sizeof(short));  //2
	printf("%d\n", sizeof(long));  //4
	printf("%d\n", sizeof(long long));  //8  
	printf("%d\n", sizeof(float));  //4
	printf("%d\n", sizeof(double));  //8
    
    // 对于数组类型,那么计算的使该数组的总大小
    int arr1[10] = {0};
    printf("%d\n", sizeof(arr1));  //计算出该数组的总大小40 
    printf("%d\n", sizeof(arr1[0]));  //这里计算的是数组第一个元素的大小为4
    
    //因数组每个元素的类型是相同的,那么显然可以计算数组元素的个数,即数组总大小 / 单个元素大小 = 数组中元素的个数
    
}

这里sizeof 和 strlen库函数有一定相同的作用,例如去求一个字符串的长度(大小)

#include <stdio.h>
int main(){
    char arr1[] = "aaa";
    char arr2[] = {'a','a','a'};
    
    printf("%d\n", sizeof(arr1));  //4
    printf("%d\n", sizeof(arr2));  //3
    
    printf("%d\n", strlen(arr1));  //3
    printf("%d\n", strlen(arr2));  //42
    
    /*字符串的结尾处默认会有\0,而这并不会在字符串中显示,sizeof关心实际拥有的元素个数
    strlen是库函数,用来求字符串的长度,在遇到'\0' 会自动停止,返回的是截止到空字符之前的元素个数
    因此在求arr2时,该数组在内存中分布并没有包含'\0',因此将一直向后检索,知道遇到空字符停止,其结果将会是一个无法预料的随机数
    */
}

运行结果如下:

在这里插入图片描述

4.自增自减运算

​ 前置:先++(- -),后使用

​ 后置:先使用,后++(- -)

#include <stdio.h>
int main(){
    //示例如下
    int a = 1;
    int b = (++a) + (++a) + (++a);  //这样的代码方式本身就过于复杂,在不同编译器上的结果是不同的()
    printf("b = %d", b); 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值