a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 編程 > C > 正文

非常經(jīng)典的C語(yǔ)言趣味題目

2020-01-26 16:19:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

http://stevenkobes.com/ctest.html

在這個(gè)網(wǎng)站上發(fā)現(xiàn)一套很有趣的C語(yǔ)言測(cè)試題,如果你招聘C語(yǔ)言相關(guān)開(kāi)發(fā)人員,或者正在學(xué)習(xí)C語(yǔ)言,很值得做一做。

如果沒(méi)有做,下面內(nèi)容暫時(shí)不要看,最好自己先完成一遍。

image

OK,假設(shè)你做的答案沒(méi)有完全正確,那你可以繼續(xù)看下去了,否則,后面內(nèi)容對(duì)你來(lái)說(shuō)就是小菜一碟,不值得看。

第一題:

#include <setjmp.h>
static jmp_buf buf;
int main(void)
{
volatile int b = 3;
if (setjmp(buf) != 0)
{
printf("%d/n", b);
exit(0);
}
b = 5;
longjmp(buf, 1);
}

輸出結(jié)果為A)3 B)5 C)0 D)都不是

答案為B,也就是輸出5。

關(guān)鍵點(diǎn)在于理解setjmp以及l(fā)ongjmp,(http://en.wikipedia.org/wiki/Setjmp.h )第一次運(yùn)行到setjmp,會(huì)設(shè)置jmp_buf,然后返回0。當(dāng)調(diào)用longjmp時(shí),會(huì)把longjmp里面的非0值作為setjmp的返回值返回(如果longjmp的value參數(shù)為0,setjmp恢復(fù)后返回1,也就是當(dāng)恢復(fù)到setjmp存儲(chǔ)點(diǎn)的時(shí)候,setjmp一定不會(huì)返回0)。

setjmp-longjmp組合的用處類似于游戲中的存盤讀盤功能,經(jīng)常被用于類似C++的異常恢復(fù)操作。

第二題:

struct node
{
int a; int b; int c;
};
struct node s = { 3, 5, 6 };
struct node *pt = &s;
printf("%d/n", *(int*)pt);
返回結(jié)果為3,這個(gè)算是比較簡(jiǎn)單,pt為指向結(jié)構(gòu)s的指針,然后將pt轉(zhuǎn)換為int指針,進(jìn)行dereference,取出一個(gè)int值,那就是結(jié)構(gòu)中第一個(gè)數(shù)。

我們將題目改動(dòng)一下,如下代碼

復(fù)制代碼 代碼如下:

struct node
{
char a; char b; short c; int d;
};
struct node s = { 3, 5, 6, 99 };
struct node *pt = &s;
printf("%X/n", *(int*)pt);


需要注意的是一般32位C編譯器都認(rèn)為char是8bit,short是16bit,int為32bit,所以node在內(nèi)存中應(yīng)該正好是對(duì)齊的,也就是abc這幾個(gè)成員之間沒(méi)有空隙。最終結(jié)果應(yīng)該為60503,如果不是,歡迎你告訴我你具體的編譯環(huán)境以及硬件配置。

第三題:

復(fù)制代碼 代碼如下:

int foo(int x, int n){
int val = 1;
if (n > 0)
{
if (n % 2 == 1) val *= x;
val *= foo(x * x, n / 2);
}
return val;
}


這道題其實(shí)最簡(jiǎn)單的辦法就是在紙上做一個(gè)推演計(jì)算,一步一步跑一下,就能得到答案了,這里面沒(méi)有任何復(fù)雜的C語(yǔ)言概念。

第四題:

復(fù)制代碼 代碼如下:

int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int*)(&a + 1);
printf("%d %d/n", *(a + 1), *(ptr 主站蜘蛛池模板: 一区二区视频 | 国产精品国产成人国产三级 | 亚洲毛片网站 | 日本一区二区三区四区视频 | 在线免费看污网站 | 中文字幕在线观看www | 午夜av不卡 | 国产精品美女www爽爽爽动态图 | 国产精品视频网站 | 久久久www成人免费无遮挡大片 | 99国产精品99久久久久久 | 午夜影院在线免费观看 | 国产精品国产三级国产aⅴ中文 | 久久99精品久久久久久久青青日本 | 色网站视频 | 欧美成人手机在线视频 | 国产成人在线网站 | 亚洲欧美在线观看 | 三级电影网址 | 日本在线观看免费 | 日韩在线资源 | 久久久久免费精品视频 | 欧洲精品乱码久久久久蜜桃 | 久久成人久久爱 | 中文字幕影院 | 日韩免费一区二区三区 | 精品亚洲一区二区三区在线观看 | 国产精品久久久久久福利一牛影视 | 男人天堂午夜 | 欧美成人一区二区三区片免费 | 久久人人爽人人爽人人片av不 | 羞羞av在线| 成人免费视频视频在线观看 免费 | 蜜臀久久99精品久久久无需会员 | 久久精品 | 午夜影院免费 | 欧美日韩国产精品 | 国产精品久久久久久久久 | 国产在线日韩 | 欧美一级在线观看 | 99精品欧美一区二区三区 |