首页 > 编程语言 >初学者常犯:编程等号与数学等号划等号

初学者常犯:编程等号与数学等号划等号

时间:2025-01-13 17:59:41浏览次数:3  
标签:常犯 int 划等号 编程 初学者 printf 1.1 变量 赋值

初学者常犯:编程等号与数学等号划等号


刚学编程的娃,非常容易在一个地方栽跟头,就是等号。他们常将编程中的等号与数学中等号划等号。实际上二者的意义完全不同,本文将详细介绍其差异,并提出一种防止出错的好的编程习惯。

一、编程= vs 数学=

1.1 意义不同

1.1.1 等号的意义

在数学中,等号(=)表示一种逻辑关系,只表示左右两边相等。
在这里插入图片描述
在C语言中,等号(=)表示赋值操作,即将右侧的值存放到左侧的变量中。
在这里插入图片描述
也就是说:
在这里插入图片描述

1.1.2 案例展示

用一个简单的例子最能表现出二者的不同。
a=a+1这个式子在数学中显然是不成立的,但在C语言中却是成立的,它表示将变量a的值加1,再赋给变量a。

#include<stdio.h>
int main(){
    int a=1;
    a=a+1;
    printf("%d", a); //输出2
    return 0;
}

1.1.3 变量和等号

变量是啥?你可以把它想象成一个装东西的盒子,盒子里的内容可以变来变去。而等号,就是那个用来往盒子里放东西的工具,你可把它想象成传送带。
在这里插入图片描述

1.2 用法不同

1.2.1 类据类型转换

数学中,等号两边可以是数字、字母,甚至是复杂的表达式,只要它们算出来的结果一样就OK。然而,在编程里,等号可挑剔了!它要求等号两边的类型得匹配。比如:

int a = 9527;
double b = a; 

这里,变量a的数据类型是整型(int),而变量b是浮点型(double)。把A类型的变量赋给B类型,就是类型不匹配。
要解决这个问题,就得把A类型转换为B类型,再赋给B类型的变量。
好在,这个转换过程是编译器自动搞定的,咱们不用做什么,这个叫隐式类型转换。
但是,在这个转换过程中可能会存在精度损失,比如:

#include <stdio.h>
int main() {
    double a = 95.27;
    int b = a;
    printf("%d\n", b);
    return 0;
}

输出结果:95,后面的小数部分被直接舍去了。

1.2.2 连等vs链式赋值

数学中,有一种等式叫连等式,咱们都写过。它的形式是这样的:
1 + 2 × 3 = 1 + 6 = 7 1 + 2 \times3= 1+6 = 7 1+2×3=1+6=7
如果用字母表示,形如:
a = b = c a = b = c a=b=c
它表示3个字母相等。
但是,在编程中,始终别忘了等号代表的是赋值,因此 a = b = c a = b = c a=b=c 表示的是将c的值赋给b,再将b的值赋给a,这种用法叫链式赋值(或连赋值)。
然而,链式赋值看起来挺酷,但复杂的链式赋值会降低代码可读性,甚至还会产生意想不到的错误,还是少用为妙。
有关链式赋值的更多介绍,详见:神经错乱的连赋值

二、C语言真正的等号

在C语言中,双等号(即==)才表示逻辑上的相等关系,它等价于数学中的等号(=)。
初学者在if、while、for等语句中表示逻辑判断时,经常将双等号(==)误用为等号(=),导致运行结果出错(注意是运行结果出错,编译时程序是可以正常通过的,所以这种错误不易发现)。
例如:

#include <stdio.h>
int main() {
    int a=1;
    int b=2;
    printf("a==b的值是%d\n", a==b);
    if(a==b) //判断a与b是否相等的正确方式
    {
        // 该部分将不会执行
        printf("我永远躲在暗处看着你!");
    }
    
	printf("a=b的值是%d\n", a=b);
    if(a=b) //初学者乐园
    {
        // 该部分将会执行
        printf("当a、b不同时,在编程世界,可以有这样一个式子:a=b");
    }
    return 0;
}

运行结果:
在这里插入图片描述
上面的代码中,因为a不等于b,所以输出a==b的结果是0(0代表“假”),故该if语句不会执行;而a=b就是将2赋给变量a,所以输出a=b的结果是2(非零整数都代表“真”),故该if语句会执行。
前面说了,这种混用错误编译时不会报错,因而一旦出现很难发现,所以初学者一定要注意。

三、避免出错的好习惯

有一个很好的编程习惯,可能很多大神都不知道,可以在一定程度上减少这种错误的发生。
这个习惯就是当判断一个数和一个变量是否相等时,要把数放在符号之前。
比如:

#include<stdio.h>
int main(){
    int a;
    scanf("%d", &a);
    if(2==a) //好习惯:将2放在==前面
    {
        printf("朋友,我猜对了,你就是个2!\n");
    }
    return 0;
}

此时如果误将==写成=,程序是无法通过编译的。因为在C语言中,赋值运算符是把值赋给变量,等号左边的一定要是变量,2=a不符合语法,编译器遇到这种代码时就会报错,从而起到帮助程序员纠错的作用。

标签:常犯,int,划等号,编程,初学者,printf,1.1,变量,赋值
From: https://blog.csdn.net/jjmhx/article/details/145106159

相关文章

  • 冒泡排序:初学者的必经之路
    ......
  • 【干货】大厂数据分析师面试,最常犯的2个技术错误
    01专家简介徐杨老师,CDA数据科学研究院教研副总监,主要负责CDA认证项目以及机器学习/人工智能类课程的研发与授课,负责过中国人民银行结算中心数据分析内训、华夏银行数据分析内训、苏州银行总行数据挖掘内训项目,英国影子银行风险监管分析,纽约市场对香港市场高频交易分析项目......
  • Python初学者常见问题,看看你中了几条?
    一、安装相关问题安装错误问题描述:在安装 Python 过程中,可能会遇到各种错误,如安装包损坏、系统环境不兼容等。例如,在 Windows 系统中,安装程序可能会提示缺少某些系统组件。解决方法:确保从官方网站(https://www.python.org/downloads/)下载适合您操作系统版本的 Python ......
  • 初学者必知的微软.NET6开发环境相关技术介绍
    原文链接:https://blog.csdn.net/wang2015cn/article/details/135619869 .NET是一个开发平台,或者叫开发者平台。使用.NET你可以创建不同类型的应用程序,使用多种开发语言、编辑器和工具库创建网页、手机、桌面以及AI等应用。其核心特点是:跨平台。就.NET的发展来说,2016年是一......
  • 深度学习小白初学者入门干货!
    前言:主要内容阐述了深度学习中常见的实验问题与实验技巧,包括消融实验、对比实验的做法及相关指标,数据集的分配问题,深度学习改进实验的顺序,预训练权重对改进和精度的影响,YAML模型结构图的绘制,训练的可重现性,pytorch模块内结构图的绘制,创新性,模块加入结构的方法,判断模型收敛与......
  • ssm826基于ssm的电影评论系统+vue 适合初学者学习的项目
    博主介绍:专注于Java(springbootssm等开发框架)vue .net phpphythonnode.js  uniapp微信小程序等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了2000+毕设......
  • 初学者怎么入门大语言模型(LLM)?
    大语言模型(LLM)是一门博大精深的学科,涉及到高等数学、python编程、PyTorch/Tensorflow/Onnx等深度学习框架……然而奇妙的是,越是看上去难得要死、一辈子都学不完的技术,入门起来却越是容易。正如阿瑟·克拉克的名言:足够先进的科技看上去与魔法无异。大语言模型先进得如同魔法......
  • Linux初学者的全面指南(四):shell编程(下)
    目录一、表达式与运算符1.表达式2.运算符  二、流程控制语句1.多命令组合 2.分支结构三、函数 1.定义与调用2.参数3.定义与调用4.返回值 总结一、表达式与运算符1.表达式算术表达式bash自身并不支持简单的数学运算,但可通过awk和expr等命令来实现数学......
  • 初学者怎么入门大语言模型(LLM)?
    大语言模型(LLM)是一门博大精深的学科,涉及到高等数学、python编程、PyTorch/Tensorflow/Onnx等深度学习框架……然而奇妙的是,越是看上去难得要死、一辈子都学不完的技术,入门起来却越是容易。正如阿瑟·克拉克的名言:足够先进的科技看上去与魔法无异。大语言模型先进得如同魔法......
  • 鸿蒙初学者学习手册_应用开发页面路由(页面路由(Navigation )(一))
    实现页面路由可以分为两种方法,Router和Navigation首先,想象一下你在玩手机上的一个App,比如淘宝。你从一个页面(比如首页)跳到另一个页面(比如商品详情页),这就是页面跳转。页面路由(@ohos.router):这就像是一条条固定的路,比如从家到学校的路。你只能按照这些路走,不能随意偏离。在......