注册 登录
编程论坛 C语言论坛

请问变量可以用==给常量吗?

梦小123 发布于 2021-02-17 09:25, 1534 次点击
# include <stdio.h>
int main()
{
    int a;
    a=2
    if(3==a);
    {
        printf("a is 3");
    }
    else
    {
        printf("a is %d",a);
    }


  return 0;
5 回复
#2
yuma2021-02-17 12:27
if(3 = = a);

=   赋值
==  等于比较

这样赋值
这个毫无疑问是不可以的。任何一种编程语言都不可以。

[此贴子已经被作者于2021-2-17 12:32编辑过]

#3
do8do8do82021-02-17 17:11
请问变量可以用==给常量吗?
(==)这个符号在很多编程语言里的用途是作为逻辑符号(相等)
而常量是不可以修改的,一般的变量可以修改
所以有给变量赋值这么一说 但是变量=常量(或变量)
而你问的 变量用==给常量 这是可以的 因为这样的意思是 变量与常量的逻辑是否相等的意思
根据你的程序代码
 if(3==a);//????这里怎么多了一个分号,思细极恐~~
    {
        printf("a is 3");
    }
猜测你是否是想 if(a==3)这样写? 这是可以的
(3==a)的写法其实是避免 出现把==写成= ,因为你把3写在前面若把==写成了= (3=a)那么程序就会报错,来提醒程序员
若写(a==3)若写成了(a=3)这个程序是正常的,若是几百万行的代码,若出了这个小问题,那就增加了排查的难度。
#4
梦小1232021-02-17 17:32
回复 3楼 do8do8do8
最后两行文字还是没有理解,为啥怕程序员出错还要这样写呢?
#5
do8do8do82021-02-17 17:48
回复 4楼 梦小123
按这个写法(3==a),若程序员把(3==a)写成了(3=a),就犯了语法错误,那么在编译程序的时候,编译器不让编译成功就会报错,
根据报错的提示,程序员很容易修正过来
按这个写法(a==3),若程序员把(a==3)写成了(a=3),每有语法错误,编译器是让其编译成功的。
编译器只能帮你找出语法的错误,但不能找出语义的错误。
语法错误就是不符合编程语言的规则,
语义错误就是程序员编写的代码所得到的结果与原本想要的不符合,这个跟编译器没关系
把常量放在前面的写法,是想利用编译器来辨别,以防小错酿成大错
这其实是一种良好编码的忠告。
#6
梦小1232021-02-17 17:59
回复 5楼 do8do8do8
谢谢
1