用預處理指令#define 宣告乙個常數,用以表明1年中有多少秒(忽略閏年問題)
#define seconds_per_year (60 * 60 * 24 * 365)ul
註解:
1)#define 語法的基本知識(例如:不能以分號結束,括號的使用,等等);
2)直接寫出你是如何計算一年中有多少秒而不是計算出實際的值,是更清晰而沒有代價的;
3)意識到這個表示式將使乙個16位機的整型數溢位-因此要用到長整型符號l,告訴編譯器這個常數是的長整型數;
4)如果你在你的表示式中用到ul(表示無符號長整型),那麼你有了乙個好的起點。記住,第一印象很重要。
寫乙個"標準"巨集min ,這個巨集輸入兩個引數並返回較小的乙個
#define mix(a,b) ( (a) <= (b) ? (a) : (b) )
註解:
1)三重條件操作符的知識。這個操作符存在c語言中的原因是它使得編譯器能產生比if-then-else更優化的**;使用括號。
預處理器標識#error的目的是什麼?
答:#error 停止編譯並顯示錯誤資訊。
用變數a給出下面的定義
1)乙個指向指標的的指標,它指向的指標是指向乙個整型數;int **a;
2)乙個指向有10個整型數陣列的指標;int (*a)[10];
3)乙個指向函式的指標,該函式有乙個整型引數並返回乙個整型數;int (*max_function)(int a);
4)乙個有10個指標的陣列,該指標指向乙個函式,該函式有乙個整型引數並返回乙個整型數;int (*a[10])(int);
給定乙個整型變數a,寫兩段**,第乙個設定a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變。(位操作題)
#define bit3 (0x01<<3)
static int a;
void set_bit3(void)
void clear_bit3(void)
6.設定一絕對位址為0x67a9的整型變數的值為0xaa55。(固定記憶體操作題)
int *ptr;
ptr = (int*)0x67a9;
*ptr = 0xaa55;
__interrupt double compute_area (double radius)
這個函式有太多的錯誤了,以至讓人不知從何說起了:
1) isr 不能返回乙個值。如果你不懂這個,那麼你不會被雇用的。
2) isr 不能傳遞引數。如果你沒有看到這一點,你被雇用的機會等同第一項。
3) 在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的暫存器入棧,有些處理器/編譯器就是不允許在isr中做浮點運算。此外,isr應該是短而有效率的,在isr中做浮點運算是不明智的。
4) 與第三點一脈相承,printf()經常有重入和效能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到後兩點,那麼你的被雇用前景越來越光明了
請找出下面**中的所有錯誤 (題目不錯,值得一看) //說明:以下**是把乙個字串倒序,如「abcd」倒序後變為「dcba」
#include"string.h"
int main(void)
解答:
// 找出錯誤,一共有4個錯誤;
int main()
// 改進該函式提高效率: (方法一需要額外的儲存空間,效率不高.) 不錯的想法
#include #include main()
printf("%s",str);
return 0;
}
int a = 0x9f;
a &=~(1<<2);
uint8_t temp0 =0,temp1 = 0,temp2 = 2,te*** =0;
uint32_t temp = 0;
temp= (temp0<<24)|(temp1<<16)|(temp2<<8)|te***;
//此處定義了陣列為15個,但沒有明確給出大小
uint8_t length;
uint8_t data =;
length=sizeof(data)/sizeof(data[0]);//陣列佔記憶體總空間,除以單個元素佔記憶體空
printf("data length=%d\r\n",length);//輸出為15
c語言學習篇
c語言 編譯 執行c程式 include intmain 1.了解c語言結構 main 主函式,所有c語言程式都要包含主函式,從main 函式開始執行 include 是乙個預處理的命令,用來引入標頭檔案 stdio.h 是乙個標頭檔案 標準輸入輸出標頭檔案 printf 格式化輸出到螢幕。prin...
C語言學習 函式篇
函式需要前置,因為系統會預設主函式先執行。為什麼使用函式 避免重複性操作。提高程式可讀性,方便後期修改和完善。有利於程式的模組化。函式類似於乙個黑盒子,有時候不需要知道裡面你怎麼執行的,知道如何用就好了。函式形參用完之後記憶體空間會被釋放,void表示沒有返回值。函式是c語言的基本單位。什麼是函式 ...
C語言學習篇(概念題)
關鍵字static的作用是什麼?1 在模組內 在函式內 則此靜態變數只能在該函式內使用,超出範圍不能使用,但是它還占用記憶體,還存在。2 在模組內 但在函式體外 乙個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問,它是乙個本地的全域性變數。3 在模組內,乙個被宣告為靜態的函式...