作业一2023.10.23

lizhuolin 

1. 在Dev Cpp 平台输出 “Hello World!” 语句。(请用CSDN的Markdown语法提交代码+运行结果的截图,后面的题目同理,不再重复)

2. 在Dev Cpp平台上新建一个项目,仿照截图,输入程序代码。观察其输出。

3 在Dev Cpp平台上新建一个项目,仿照截图,输入程序代码。观察其输出。(请用CSDN的Markdown语法提交代码+运行结果的截图)

4. 输入书本P48「温度转换」的代码,并观察其输出。

5. 输入书本P52「三角形周长」的代码,并观察其输出。

6. 溢出问题:

short short_value = 32767; // short占2个字节,最大值32767;

short_value += 1;

printf(“%d”, short_value);

上述结果输出值为:short_value = -32768, 请分析这个值是怎么得到的?

在这段代码中,short_value的初始值为32767,这是short类型能够表示的最大值。然后对short_value进行加1操作,这将导致short_value的值溢出,即它的值超出了short类型的最大值。当short_value的值超过了最大值,它将回滚到最小值,即-32768。因此,最终输出的结果为short_value = -32768。

7. 求值:

(a)-30 * 3 + 21 / 6

(b) -30 + 3 * 21 / 6

(c) 30 / 3 * 21 % 6

(d) -30 / 3 * 21 % 4

a= -87,b= -20,c= 0,d= -2

8. 假设i,j, k 都是整数,说明表达式 i != j < k的含义。

首先,小于运算符(<)的优先级高于不等于运算符(!=),因此 j < k 会首先被计算。如果 j 小于 k,则 j < k 的结果为真(即1),否则为假(即0)。

所以,比较 j 和 k 的大小,如果 j 小于 k,则 i 不等于 1,即 i 的值为 0 或 1,取决于 i 的初始值;如果 j 不小于 k,则 i 不等于 0,即 i 的值为 1。

9. 赋值完毕,i, d 的值分别为多少?

int i ; double d;

(a) d = i = 3.5;      i为3 d为3.0

(b) i = d = 3.5;      i为3 d为3.5

10. 请查询资料了解「条件运算符」的语法、例子等。

条件运算符(Conditional Operator),也称为三目运算符(Ternary Operator),是C语言中的一种运算符,其语法形式为:

```
表达式1 ? 表达式2 : 表达式3
```

其中,表达式1是一个条件表达式,如果其值为真,则整个表达式的值为表达式2的值,否则为表达式3的值。

下面是一个使用条件运算符的例子:

#include <stdio.h>

int main()
{
    int a = 10, b = 20, max;
    max = (a > b) ? a : b;
    printf("max = %d\n", max);
    return 0;
}
```

在上面的示例中,我们使用条件运算符来比较两个整数 a 和 b 的大小,并将较大的值赋给变量 max。如果 a 大于 b,则表达式 (a > b) 的值为真(即非零值),则整个表达式的值为 a,否则为 b。在这个例子中,由于 b 的值大于 a,因此整个表达式的值为 b,将 b 的值赋给了变量 max,最终输出 max 的值为 20。

条件运算符通常用于简化if语句的写法,例如:

if (x > 0) {
    y = x;
} else {
    y = -x;
}
```

可以简化为:

y = (x > 0) ? x : -x;
```

这样可以使代码更加简洁和易读。需要注意的是,条件运算符的优先级较低,因此在使用时需要加上括号来明确运算的顺序。

11. 假设有如下定义:

char cval;

int ival;

unsigned int ui;

float fval;

double dval;

请回答下列表达式是否又发生类型转换。请将有发生的情况指出来。下列表达式是否又发生类型转换。请将有发生的情况指

  1. cval = ‘a’ + 3;
  2. fval = ui – ival * 1.0;
  3. dval = ui * fval;
  4. cval = ival + fval + dval;

cval = ‘a’ + 3; 会发生类型转换。表达式右侧的 ‘a’ 是一个字符常量,它的ASCII码值为97,加上整数3后,会得到一个整数100,然后将这个整数转换为字符类型,赋值给变量 cval。

fval = ui - ival * 1.0; 会发生类型转换。表达式右侧的 ival * 1.0 会先将整数 ival 转换为浮点数,然后进行乘法运算,得到一个浮点数结果,再将无符号整数 ui 转换为浮点数,最终进行减法运算,将结果赋值给变量 fval。

dval = ui * fval; 会发生类型转换。表达式右侧的 ui 会先被转换为浮点数,然后与浮点数变量 fval 相乘,得到一个浮点数结果,最终将结果赋值给变量 dval。

cval = ival + fval + dval; 会发生类型转换。表达式右侧的三个操作数都是不同类型的数值,因此会发生隐式类型转换。首先将整数 ival 转换为浮点数,然后将浮点数变量 fval 和 dval 相加,得到一个浮点数结果,最后将结果转换为字符类型,赋值给变量 cval。需要注意的是,由于浮点数转换为字符类型时会发生截断,因此最终结果可能不是预期的字符。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值