C语言错题之 8

news/2024/11/30 0:51:47/

前言:

今天依然是五道小题,都不难,主要是一些细节的知识。
这选择题做的真是让我大开眼界,长见识了(🤦‍)

1.

题干:

点击此处跳转

答案:

ABCD

解析:

(解析取自牛客网,真的很讨厌并发的这种题)

A

y先执行++a,a为2;
y再执行printf,a入栈,在打印到终端之前切换到x
x执行++a,a为3;
x执行printf,输出3;再切换到y
y执行打印,输出2

B

x先执行++a,a为2;
x再执行printf,输出2;切换到y
y执行++a,a为3;
y执行printf,输出3;

C

x先执行++a,a为2;切换到y
y执行++a,a为3;
y执行printf,输出3;切换到x
x执行printf,输出3

D

类似C
执行++a操作但没有写回到内存

知识点

(1)并行的两个线程可随时被抢占

(2)++a和printf不是原子指令,可随时被打断;特别注意函数printf,a作为参数压栈后,a再变化则不会影响输出(printf实际打印的是压栈的参数,是值拷贝的栈变量)

补充说明:
1.
函数栈帧的创建与销毁
2.
原子指令:

原子指令是计算机中的一种特殊指令,它能够在执行过程中保证操作的原子性。原子性指的是该指令的执行要么完全成功,要么完全失败,不存在部分完成的情况。
在多线程或并发编程中,原子指令可以用来保证共享数据的一致性和并发操作的正确性。常见的原子指令包括加法、比较交换、加载和存储等操作。

2.

题干:

点击此处跳转

答案:

C

解析:

这道题考的是细节,

a=-1

是赋值操作!!
接下来就很简单了,-1为真、0为假。
(学了这么久还是会在这种基础题上出错(🤦‍)

3.

题干:

点击此处跳转

答案:

D

解析:

A

(*prt+1)是这个二维数组的第二行,即{4, 5, 6}
(*prt+1)[2]即可
外面多进行了一次解引用操作

B

*p是a[0],是1,此处+5,结果是6,但表示的不是数组元素a[1][2]
可以写成 (p+5)再解引用

C

选项输出的是数组元素a[1][2]的地址,应该在最外层再进行一次解引用操作

4.

题干:

点击此处跳转

答案:

A

解析:

B

不能直接将字符串赋值给数组名,数组名是地址

C

不能将两个字符数组直接互相赋值。如果想进行数组之间的赋值,可以使用strcpy函数
strcpy(arr1, “Hello”);

D

定义数组时,必须指定长度或者直接初始化。

5.

题干:

点击此处跳转

答案:

A

解析:

根据C99规定, sizeof是一个编译时刻就起效果的运算符,在其内的任何运算都没有意义,sizeof是运算符,它在编译时起作用,而不是运行时。
放在这道题的意思就是:
在编译时,直接得到了sizeof(int),在运行时,i++根本没有执行过。

sizeof(i++); 在编译的时候被翻译成
sizeof((i++的数据类型)) 也就是 sizeof(int); 不会执行i++了。

结语

今天的五道题到这里就结束了,我们下期见。


http://www.ppmy.cn/news/1011133.html

相关文章

无人驾驶实战-第八课(定位算法)

无人驾驶中定位的作用: 定位高精度地图:提供当前位置的静态环境感知 (车道线/交通指示牌/红绿灯/柱子/建筑物/等) 定位动态物体感知:将感知到的动态物体正确放入静态环境 定位获取位置姿态:用于路径规划/决…

Vue系列第八篇:echarts绘制柱状图和折线图

本篇将使用echarts框架进行柱状图和折线图绘制。 目录 1.绘制效果 2.安装echarts 3.前端代码 4.后端代码 1.绘制效果 2.安装echarts // 安装echarts版本4 npm i -D echarts4 3.前端代码 src/api/api.js //业务服务调用接口封装import service from ../service.js //npm …

postgresql 使用之 存储架构 触摸真实数据的存储结构以及组织形式,存入数据库的数据原来在这里

存储架构 ​专栏内容: postgresql内核源码分析 手写数据库toadb 并发编程 个人主页:我的主页 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 概述 postgresql 数据库服务运行时,数据在磁…

排序八卦炉之归并、计数

文章目录 1.归并排序1.1初识代码1.2代码分析1.3复杂度1.4非递归版本1.01.初识代码2.代码分析 1.5非递归版本2.01.初识代码2.代码分析 2.计数排序2.1初始代码2.2代码分析 1.归并排序 1.1初识代码 //归并排序 时间复杂度:O(N*logN) 空间复杂度:O(N) vo…

Element-UI简介

目录 安装 常用组件 Container 布局容器 Button 按钮 MessageBox 弹框 Form 表单验证 element-ui是一个前端的ui框架,封装了很多已经写好的ui组件,例如表单组件,布局组件,表格组件.......是一套桌面端组件。 Element - 网站…

每天一道leetcode:剑指 Offer 59 - II. 队列的最大值(中等)

今日份题目: 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例1 输入: ["MaxQueue",&qu…

【Segment Anything Model】四:预处理自己的数据集接入SAM

文章目录 1️⃣预备知识2️⃣实现思路🔸脚本预处理得到包含embedd和GT的npz🔸编写Dataset类3️⃣代码🔸实现脚本预处理得到包含embedd和GT的npz代码🔸实现Dataset的代码 1️⃣预备知识 欢迎订阅本专栏(为爱发电&#…

Kubernetes(K8s)从入门到精通系列之十一:安装kubeadm

Kubernetes K8s从入门到精通系列之十一:安装kubeadm 一、准备工作二、确保每个节点上 MAC 地址和 product_uuid 的唯一性三、检查网络适配器四、检查所需端口五、安装容器运行时六、安装 kubeadm、kubelet 和 kubectl七、配置 cgroup 驱动程序 一、准备工作 一台兼…