C語言--每日五道選擇題-- Day22

第一題(注意)

1.下列 C 代碼中,不屬于未定義行為的有:______。

A:int i=0; i=(i++);

B:char *p="hello"; p[1]='E';

C:char *p="hello"; char ch=*p++;

D:int i=0; printf("%d %d\n",i++,i--);

答案及解析 C

????????未定義行為是指C語言標準未做規定的行為。同時,標準也從沒要求編譯器判斷未定義行為,所以這些行為有編譯器自行處理,在不同的編譯器可能會產生不同的結果,可能報錯,可能正常運行,可能運行結果不同。

未定義行為:
1.變量即是左邊結果,又是右邊的操作數,如a+=a++,a %= b ^= a ^= b ^= a
2.使用越界數組也是C的一個“未定義行為”
3.允許一個隨便指的指針的讀寫。
4.使用未初始化的變量

5.改變字符串常量

A:經典的變量即是左邊結果,又是右邊操作數,屬于未定義行為;

B:首先p指向的是字符串常量,修改字符串常量也是未定義行為;

C:定義了一個字符串常量,后面的ch是取的*p++,先p++,p存的是hello的首元素地址,是p的地址,p++指向e,解引用之后取到的是e,ch = e。只是賦值,沒有改變字符串常量,不是未定義行為;

D:在printf語句中i++和i--無法確定誰先運行,是未定義

相關博客:C/C++未定義行為的例子匯總-CSDN博客

第二題

2.下面程序輸出為()

#include <stdio.h>
int fun(int a) {int b = 0;static int c = 3;b++;c++;return (a+b+c);
}int main( ) {int i=0;for(; i < 3; i++)printf("%d",fun(2));return 0;
}

A:777

B:789

C:7911

D:71320

答案及解析 B

本題考查的是局部的static變量(靜態變量)的相關知識,我們要知道,局部靜態變量只會初始化一次,然后后續變化都會累加;

第三題(有異議)

3.下列敘述中,錯誤的是:

A:計算機不能直接執行C語言編寫的源程序。

B:C程序經編譯后,生成的擴展名為.obj的文件是一個二進制文件。

C:擴展名為.obj的文件,經鏈接程序生成擴展名為.exe的文件是一個二進制文件。

D:擴展名為.obj和.exe的二進制文件都可以直接運行。

答案及解析 D

本題是考查大家對翻譯環境的理解,關于翻譯環境的博客:通過歷史 --> 了解翻譯環境(預處理、編譯、匯編、鏈接)-CSDN博客

A:計算機只識別二進制指令,所以要通過預處理--> 編譯?--> 匯編?--> 鏈接 才能傳給計算機

B:這里的B選項不嚴謹,準確來說編譯生成的是.s的文件,并不是我們的obj文件,因為我們的編譯器是會先把.c 文件經過預處理先生成.i文件,之后對.i文件進行編譯翻譯成我們的匯編代碼生成.s文件,之后才是經過匯編翻譯成我們的.obj/.o這樣的目標文件,但是目標文件是不能夠執行的,還需要通過鏈接,找到對應的動態庫啊或者靜態庫這樣的,為的是找到你調用的函數的定義。

????????這里的不嚴謹取決你的編譯器是直接將C語言翻譯成二進制指令,還是要先把C轉換成匯編,再由匯編變成二進制,如果是前者,就是對的,后者就是錯的。其實一般就是轉為匯編,畢竟我們先有匯編變成二進制的編譯器啊,站在巨人的肩膀上嘛!而且C語言和匯編還相似,所以我才會說這里不嚴謹,畢竟計算機這門學科應該是發展性,繼承性的學科,而不是我發明了個新的東西,要重新開始寫所有的東西。但是D是最錯的,所以就是D了。

????????在牛客網本題的評論就是本人發的,沒有存在抄襲哦

C:這是對的,.obj的文件通過鏈接之后才形成.exe的可執行程序;

D:記住.obj/.o只是目標文件,還沒有找到對應的函數定義,所以無法執行,需要通過鏈接尋找動態庫或者靜態庫,才可以找到函數的定義,進而生成可執行的.exe文件。

第四題

4. 設有 int x=11; 則表達式 (x++ * 1/3) 的值是( )

A:3

B:4

C:11

D:12

答案及解析 A

本題考查的是優先級的問題,這里就不做解釋

相關博客:C語言操作符優先級表格(建議收藏,每次看一下)-CSDN博客

第五題

5. 在 gcc 環境下,已知數組 int arr[5]={1,2,3,4,5}; 則 *(*(&arr+1)-1) 的結果為

A:1

B:0

C:4

D:5

答案及解析 D

本題是考查的&arr代表的是什么?

本身arr代表的是數組首元素地址,&arr是取出整個數組的地址,那他就相當于一個指針變量里存放一整個數組的地址,如何把一個數組的地址都存進去呢?就是把數組每個元素的地址,變成一個指針數組,再放在這個指針變量中,所以這個變量也就是二級指針,這樣說其實很抽象,大家可以看圖來理解。既然&arr是一個二級指針,加一就是跳過的一個數組,我們還需要知道地址是連續的,所以&arr+1指向的就是這里,但是實際就是5的地址后面的地址,因為是跳過一整個數組的地址,*(arr+1)就是解引用,取到的是一級指針,也就是5后面的地址,*(arr+1)- 1 就是對這個地址減1,減少的就是sizeof(int)的大小,就是5的地址,再解引用就是5了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160264.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160264.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160264.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis7--基礎篇3(持久化)

持久化介紹 官網地址&#xff1a; https://redis.io/docs/manual/persistence RDB(Redis DataBase)AOF(Append Only File)RDB AOF RDB模式(Redis DataBase) RDB 持久性以指定的時間間隔執行數據集的時間點快照。 實現類似照片記錄效果的方式&#xff0c;就是把某一時刻的數據…

計算機組成原理(萬字爆肝整理)

第一章 計算機系統概述 “較簡單&#xff0c;不做過多贅述&#xff0c;后面會詳細學到” 第一節 計算機系統層次結構 1.計算機系統的基本組成&#xff1a;硬件軟件 2.計算機硬件的基本組成&#xff1a;運算器存儲器控制器輸入設備輸出設備 3.系統軟件和應用軟件 系統軟件…

expdp導出分區表緩慢排查(Streams AQ: waiting for messages in the queue )

基本信息 單機&#xff0c;從老環境遷移到19.19。之前的導出速度接受范圍內。硬件是提升的 導出使用了壓縮&#xff0c;加密&#xff0c;并行64進程&#xff0c;表分區約90個&#xff0c;無lob字段。 現象 導出開始時能并行導出&#xff08;并行約45個&#xff0c;沒起到64…

Cypress環境變量

Cypress環境變量 baseUrl 當你配置了 baseUrl &#xff0c;測試套件中的 cy.visit() 、 cy.request() 都會自動以 baseUrl 的值作為前綴并且&#xff0c;當你需要訪問某些網址或者發起接口請求時&#xff0c;在代碼中就可以不用再指定請求的 host 或者 url 了 如何配置 base…

Java進階——多線程相關,實際應用中的積累,持續更新

目錄 多線程相關CountDownLatch賽跑的案例countDownLatch.await(300, TimeUnit.SECONDS); Java其他進階Map的put方法只放一個元素的集合 多線程相關 CountDownLatch 案例&#xff1a;主線程的執行需要等待子線程執行完&#xff0c;等各個線程執行完畢后&#xff0c;主線程做收…

redis的高可用(主從復制和哨兵模式)

redis的高可用&#xff08;主從復制和哨兵模式&#xff09; redis的性能管理&#xff1a;redis的數據緩存在內存當中 INFO memory&#xff1a;查看redis內存使用情況 used_memory:1800800&#xff1a;redis中數據占用的內存 used_memory_rss:5783552&#xff1a;redis向操作…

Halcon Solution Guide I basics(3): Region Of Interest(有興趣區域/找重點)

文章目錄 文章專欄前言文章解讀前言創建ROI案例1&#xff1a;直接截取ROI手動截取ROI 總結ROI套路獲取窗口句柄截取ROI區域獲取有效區域 Stop組合 文章專欄 Halcon開發 Halcon學習 練習項目gitee倉庫 CSDN Major 博主Halcon文章推薦 前言 今天來看第三章內容&#xff0c;既然是…

QTableWidget——編輯單元格

文章目錄 前言熟悉QTableWiget&#xff0c;通過實現單元格的合并、拆分、通過編輯界面實現表格內容及屬性的配置、實現表格的粘貼復制功能熟悉QTableWiget的屬性 一、[單元格的合并、拆分](https://blog.csdn.net/qq_15672897/article/details/134476530?spm1001.2014.3001.55…

Docker實踐筆記7:構建MySQL 8鏡像

使用Docker構建MySQL 8鏡像并運行容器 本教程將指導您使用Dockerfile構建和運行一個MySQL 8容器。讓我們開始吧&#xff01; 步驟1&#xff1a;創建Dockerfile 在您的項目根目錄下創建一個名為Dockerfile的文件。以下是Dockerfile的示例內容&#xff1a; # 基于最新的MySQL…

docker、elasticsearch8、springboot3集成備忘

目錄 一、背景 二、安裝docker 三、下載安裝elasticsearch 四、下載安裝elasticsearch-head 五、springboot集成elasticsearch 一、背景 前兩年研究了一段時間elasticsearch&#xff0c;當時也是網上找了很多資料&#xff0c;最后解決個各種問題可以在springboot上運行了…

vue-使用input封裝上傳文件圖片全局組件

前言 實際開發過程中&#xff0c;我們經常遇見需要上傳文件圖片功能&#xff0c;可以封裝一個全局組件來調用 原理很簡單&#xff0c;首先獲取到文件或圖片對象&#xff0c;調用自己公司文檔服務器的接口&#xff0c;上傳文件圖片 為了方便用戶體驗&#xff0c;我們應該在上傳…

Godot

前言 為什么要研究開源引擎 主要原因有&#xff1a; 可以享受“信創”政策的紅利&#xff0c;非常有利于承接政府項目。中美脫鉤背景下&#xff0c;國家提出了“信創”政策。這個政策的核心就是&#xff0c;核心技術上自主可控。涉及的產業包括&#xff1a;芯片、操作系統、數據…

【Django使用】md文檔10大模塊第5期:Django數據庫增刪改查和Django視圖

Django的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼復用&#xff0c;多個組件可以很方便的以"插件"形式服務于整個框架&#xff0c;Django有許多功能強大的第三方插件&#xff0c;你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展…

Vue項目 配置項設置

一、項目運行時瀏覽器自動打開 找到package.json文件 找到"sctipts"配置項 在"serve"配置項最后加上--open "scripts": {"serve": "vue-cli-service serve --open","build": "vue-cli-service build&quo…

Redis面試內容,Redis過期策略,Redis持久化方式,緩存穿透、緩存擊穿和緩存雪崩,以及解決辦法

文章目錄 一、redis什么是RedisRedis使用場景1、緩存2、數據共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式鎖4、全局ID5、計數器6、限流7、位統計 Redis有5中數據類型&#xff1a; SSHLZRedis中一個key的值每天12點過期&#xff…

Cookie、Session、CBV加裝飾器的三種方法

【0】cookie、session和Token的發展史 【1】Cookie的形式 存儲形式&#xff1a;k&#xff1a;v鍵值對存儲位置&#xff1a;客戶端缺點&#xff1a;不安全&#xff0c;信息可能會泄露 【2】session的形式 標識符&#xff0c;表示我是當前用戶加密出來的數據對敏感信息進行加密…

排序算法-----快速排序(非遞歸實現)

目錄 前言 快速排序 基本思路 非遞歸代碼實現 前言 很久沒跟新數據結構與算法這一欄了&#xff0c;因為數據結構與算法基本上都發布完了&#xff0c;哈哈&#xff0c;那今天我就把前面排序算法那一塊的快速排序完善一下&#xff0c;前面只發布了快速排序遞歸算法&#xff0c;…

單鏈表相關面試題--3.鏈表的中間節點

3.鏈表的中間節點 876. 鏈表的中間結點 - 力扣&#xff08;LeetCode&#xff09; /* 解題思路&#xff1a; 通過快慢指針找到中間節點&#xff0c;快指針每次走兩步&#xff0c;慢指針每次走一步&#xff0c;當快指針走到結尾的時候&#xff0c;慢指針正好走到中間位置 */ typ…

HTTPS協議的加密流程

目錄 一&#xff0c;HTTPS是什么 二&#xff0c;兩種加密方式 三&#xff0c;HTTPS的加密過程 3.1 引入對稱加密 3.2 引入非對稱加密 3.3 引入證書 一&#xff0c;HTTPS是什么 HTTPS也是一個應用層協議&#xff0c;它是在HTTP協議的基礎上引入了一個加密層。因為HTTP協議…

每天一道算法題(十)——獲取和為k的子數組

文章目錄 1、問題2、示例3、解決方法&#xff08;1&#xff09;方法1——雙指針 總結 1、問題 給你一個整數數組 nums 和一個整數 k &#xff0c;請你統計并返回 該數組中和為 k 的子數組的個數 。 子數組是數組中元素的連續非空序列。 2、示例 示例 1&#xff1a; 輸入&#x…