计算机二级C语言易混淆的区别

1,if(a=1)与if(a==1)的区别
首先,if(a=1) 等价于 a=1;if(a);
而a == 1,是判断a是不是为1;
if(sq)里面的分为两种情况,一种是sq为0,不执行if里面的代码内容;另一种是sq不为0,执行里面的代码内容。即为零与非零。若if(sq)没有带括号,则执行if下面一条代码。
举例说明:

if(a=0)  等价于   a=0;if(a);
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=1,b=0,c=0;
    if(a=0)//没有括号,只执行if下面的一条操作  此时将0赋值给a,此时a为0,为0,跳过if语句
        b=1;
        c=2;
    printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格
    return 0;//输出的结果会是   0 0 2
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=1,b=0,c=0;
    if(a=1)//没有括号,只执行if下面的一条操作  此时将1赋值给a,此时a为1,非0,执行if语句
        b=1;
        c=2;
    printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格
    return 0;//输出的结果会是   1 1 2
}
if(a==0)  等价于   判断a是否为0,若为0,为真,执行if语句;否则,不执行;
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=1,b=0,c=0;
    if(a==0)//a不为0,则为false,不执行if语句
        b=1;
        c=2;
    printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格
    return 0;//输出的结果会是   1 0 2
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a=1,b=0,c=0;
    if(a==1)//a为1,则为true,执行if语句
        b=1;
        c=2;
    printf("%d %d %d",a,b,c);//这里面会有个空格因为%d直接有个空格
    return 0;//输出的结果会是   1 1 2
}

2,设x,y,z和t均为int型变量,执行以下语句:x=y=z=1; t=++x||(++y&&++z); 后x,y,z,t的值分别为__2,1,1,1__
解题思路:首先,括号优先级最高,逗号运算级最低,赋值运算符倒数第二低。优先级高,表示先结合,而不是先计算!!!
x,y,z的初始值为1,小括号内的先结合,当成一个整体。t=++x.之后,t和x均为2,由于或运算,有一则为一,(有一个为真,整体就为真,不需要往后继续运算了),所以x为1,t为1,y和z均没有变化。

2,sizeof();这个是一个数据类型,他可以将
未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond谚语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值