C语言错题详解

一、C语言基础知识

x=023为八进制,需要将其转换为十进制,2*(8的1次方)+3*(8的0次方)=19;--19,先减再输出。

首先,这个表达式中含有赋值运算符和逗号运算符,由于赋值运算符的优先级别高于逗号运算符,因此表达式d=1,d+5,d++为三个表达式:1)d=1 2)d+5 3) d++
再次,逗号表达式的求解过程是:先求解表达式1,再求解表达式2,再求表达式3,整个逗号表达式的值是表达式3的值。因此整个表达式的值是1.0

(x,y)即(100,200)是逗号表达式,取末项的值200。

从右向左算
首先a的值是12
第一步:
计算a*=a
a=a*a=144
第二步:
计算a-=144
a=a-144=0
第三步:
计算a+=0
a=a+0=0

2.5+7%3*(int)(2.5+4.7)%2/4 ->计算(x+y)
=2.5+7%3*(int)(7.2)%2/4 ->计算(int)(7.2)强制类型转换=7
=2.5+7%3*7%2/4 ->计算求余7%3=1
=2.5+1*7%2/4 ->计算1*7=7
=2.5+7%2/4 ->计算求余7%2=1
=2.5+1/4 ->计算1/4=0(整数除整数,结果还是整数,0.25成了0)
=2.5+0
=2.5

char 类型其实也可以看作整数,此处可以看作ascii码只,也可以看作整数,不过范围比较小
w * x 返回数据类型为 int
w * x + z,因为z为double类型, 将w * x的类型隐式转换为double类型与z计算
w * x+z-y y是float类型 运算级别double大于float 相当于double-double类型的
所以最后整体返回数据类型为 double
其实考察的就是对数据类型运算级别的理解,级别由低向高转换。

二、选择结构程序设计

c/100%9从右往左计算,

246/100=2(因为a为整型)——>  2%9=2(被除数比除数小,余数取被除数)

(-1)&&(-1)=1,因为-1非0为真,所以结果为1,1&&1为真结果为1

! 是逻辑非运算符

在C语言中,! 是逻辑非运算符(logical NOT operator)。它用于对布尔表达式进行取反操作。如果布尔表达式为真(非零),使用 ! 运算符后结果为假(零);如果布尔表达式为假(零),使用 ! 运算符后结果为真(非零)。

下面是一个简单的示例:

#include <stdio.h>

int main() {
    int a = 5;
    int b = 0;

    if (!b) {
        printf("b 的值为假 (0)\n");
    }

    if (!a) {
        printf("a 的值为假 (0)\n");
    } else {
        printf("a 的值为真 (非零)\n");
    }

    return 0;
}

在这个例子中,!b 的结果为真,因为 b 的值是 0。而 !a 的结果为假,因为 a 的值是 5(非零)。因此,程序将输出:

b 的值为假 (0)
a 的值为真 (非零)

总结来说,! 用于判断一个条件是否为假,并返回相应的布尔值。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值