简单谈谈C语言中的= 和==、!=

1. =:

在C语言中等号(=)为赋值操作符,下面进行简单说明赋值操作符的使用

1) 变量的赋值操作:

int a;
a = 10;

此处为将10赋值给a,赋值过后a的值为10

2) 指针变量的赋值操作:(分别为 取地址的赋值和指针变量的赋值)

第一种:

int arr[999] = { 0 };
int *p = NULL;
p = (int *)&arr;

定义一个int(整形)的变量arr,并且将arr的数组中的每个数组元素初始化为0

定义一个int(整形)的指针变量p,并且初始化为NULL(空指针)

&(取地址符),&arr表示取arr的内存地址,然后通过(int *)强制转换为int(整形)的指针变量

最后通过赋值(=)操作,将arr的地址保存到p(整形的指针变量)

PS:&arr和&arr[0]是相同的,都为取数组中第一个元素的内存地址

第二种:

int arr[999] = { 0 };
int *p = NULL;
int *p1 = NULL;
p = (int *)&arr;
p1 = p;

此处比上面多了两处地方

定义一个int(整形)的指针变量p1,并且初始化为NULL(空指针)

通过赋值(=)操作,将p赋值给了p1,赋值过后p1和p保存的都是arr的内存地址

2. ==和!=:

== 和 != 为关系运算符 PS:<=,<,>= ,>,== ,!=都为关系运算符

= 和 ==,经常看到有用if(条件判断)进行判断的时候误将=(赋值操作符)当做判断两边是否相等使用

1) ==:

a == b

判断a和b是否相等

相等返回true(真),否则返回false(假)

2) != :

a != b

判断a和b是否不相等

不相等返回true(真),否则返回false(假)

总结

到此这篇关于C语言中的= 和==、!=的文章就介绍到这了,更多相关C语言中= 和==、!=内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解

    初学者在学习C语言的时候,最头疼的可能就是指针,话不多说.让我们直接进入正题 直接上代码 int main(void) { int *p = 0; printf("%d", *p); system("pause"); return 0; } 直接运行,好了,程序是不是报错了?那就对了.因为此时的int *p=0实际等于int *p; p=0; 让我们来验证一下对不对 int main(void) { int *p = 0; printf("%d"

  • 简单谈谈C语言中的= 和==、!=

    1. =: 在C语言中等号(=)为赋值操作符,下面进行简单说明赋值操作符的使用 1) 变量的赋值操作: int a; a = 10; 此处为将10赋值给a,赋值过后a的值为10 2) 指针变量的赋值操作:(分别为 取地址的赋值和指针变量的赋值) 第一种: int arr[999] = { 0 }; int *p = NULL; p = (int *)&arr; 定义一个int(整形)的变量arr,并且将arr的数组中的每个数组元素初始化为0 定义一个int(整形)的指针变量p,并且初始化为NUL

  • 简单了解C语言中主线程退出对子线程的影响

    这篇文章主要介绍了简单了解C语言中主线程退出对子线程的影响,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 对于程序来说,如果主进程在子进程还未结束时就已经退出,那么Linux内核会将子进程的父进程ID改为1(也就是init进程),当子进程结束后会由init进程来回收该子进程. 那如果是把进程换成线程的话,会怎么样呢?假设主线程在子线程结束前就已经退出,子线程会发生什么? 在一些论坛上看到许多人说子线程也会跟着退出,其实这是错误的,原因在于他们混

  • 简单讲解C语言中宏的定义与使用

    宏定义是预编译功能的一种, 预编译又称为预处理, 是为编译做的预备工作的阶段.处理#开头的指令, 比如拷贝 #include 包含的文件代码,#define宏定义的替换,条件编译等. 使用宏定义的好处:使用宏定义的好处:可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改.例如 π 这个常量,我们有时候会在程序的多个地方使用,如果每次使用都重新定义,一来比较麻烦,二来容易出错,所以我们可以把 π 做成宏定义来使用.   语法说明: (1)宏名一般用大写 (2)使用宏可提高程序的通用性

  • 简单聊一聊Go语言中的数组和切片

    目录 1. 数组 2. 切片(Slice) append 函数 总结 1. 数组 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成.因为数组的长度是固定的,因此在 Go 语言中很少直接使用数组.和数组对应的类型是 Slice(切片),它是可以增长和收缩的动态序列,slice 功能也更灵活. 数组的每个元素可以通过索引下标来访问,索引下标的范围是从 0 开始到数组长度减 1 的位置.内置的 len 函数将返回数组中元素的个数. var a [3]int // arra

  • 谈谈C语言中位运算你要知道的那些事儿

    目录 一.概念说明 1.概念 1.1位运算 1.2位运算符 2.举例及补充 2.1位运算 2.2位运算符 二.问题实战 1.问题描述(开放题) 2.输入输出 三.源码实现(+详细注释) 1.注释版 2.纯源码版 四.输出结果展示 1.输出结果 总结 一.概念说明 1.概念 先来看一下位运算的概念: 1.1位运算 位运算简单来说,就是按二进制位进行运算. 位运算: 从现代计算机中所有的数据二进制的形式存储在设备中.即 0.1 两种状态,计算机对二进制数据进行的运算(+.-.*./)都是叫位运算,即

  • 简单总结C语言中各种类型的指针的概念

    C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念.   常量指针: 首先它是一个指针,常量只是用来修饰指针的定语.其定义如下: char const * cp; char a='a'; 如何识别呢?根据右结合优先,先是*优先,所以这个cp变量是一个指针,然后是const修饰*,所以这是一个常量指针.即指向常量的指针. cp=&a; //正常语法 *cp=a; //错误语法,因为其指向的值是一个常量 指针常量: 首先它是一个

  • 详细谈谈C语言中动态内存

    目录 前言 1.关于动态内存的函数 1.1malloc和free函数 1.2calloc函数 1.3realloc函数 2.常见的动态内存错误 2.1对NULL指针解引用 2.2对动态内存开辟的空间越界访问 2.3 对非动态开辟内存使用free释放 2.4 使用free释放一块动态开辟内存的一部分 2.5对同一块动态内存多次释放 2.6内存泄漏 补充:为什么要引入动态内存分配 总结 前言 关于动态内存管理,可能有学习过的小伙伴,也有没有听说过的.没有听说过的小伙伴会觉得很奇怪啊,为什么要动态开辟

  • 通过一个小例子来简单理解C语言中的内存空间管理

    对于一个C语言程序而言,内存空间主要由五个部分组成代码段(.text).数据段(.data).BSS段(.bss),堆和栈组成,其中代码段,数据段和BSS段是编译的时候由编译器分配的,而堆和 栈是程序运行的时候由系统分配的.布局如下 在上图中,由编译器分配的地址空间都是在连接的时候分配的,而运行时分配的空间是在程序运行时由系统分配的 BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量和静态变量 (这里注意一个问题:一般的书上都会说全局变量和静态变量是会自动初始化

  • 简单谈谈Javascript函数中的arguments

    一.arguments的面貌 在javascript中所有的函数内部都包含了一个隐藏的变量叫arguments;它存放着所有传递到这个函数中的参数: 那么我们打开实例看看arguments的输出形式 (function fn(){ console.log(arguments) })(1,2,3,4) 结果好像是类似数组的形式打印在控制台,相信大多数人包括我看到这种输出就会认为arguments是一个数组,那么既然是数组就可以用数组的一些方法了吧,再看下一个例子: (function fn(){

  • 简单谈谈JS数组中的indexOf方法

    前言 相信说到 indexOf 大家并不陌生,判断字符串是否包涵子字符串时特别常用,正则不熟练同学的利器.这篇文章就最近遇到的一个问题,用实例再说说说indexOf方法.本文是小知识点积累,不作为深入讨论的话题,因此这里没有解释indexOf()的第二个参数,相信大家都知道第二个参数的作用. String 类型的使用 温习一下大家熟知的字符串用法,举个 let str = 'orange'; str.indexOf('o'); //0 str.indexOf('n'); //3 str.inde

随机推荐