则执行C语言语句unsigned,部分C语言题目
1、下列描述不正確的是_______D________
A.int **a[2][2]定義的是指向指針的指針數組
B.定義int **a[2][2],在32位系統下,a所用的內存空間為16
C. int **a[2][2]={0}
D.int **a[2][3]={{0,0},{0,0},{0,0}}
ps:我居然認為B不對,D對,2行3列我都不知道是啥。
2、有以下程序A
main()
{
int m=12,n=34;
printf(“%d%d”,m++,++n);printf(“%d%d\n”,n++,++m);
}
輸出結果為____B_____
A、12343513? B、12353514? C、12353513????? D、12343514
3、若a為int類型,且其值為3,則執行完表達式a+=++a后,a的值是____C____
A、6????? B、7?????? C、8?????? D、9
4、下列描述不正確的是_______D________
A.int **a[2][2]定義的是指向指針的指針數組
B.定義int **a[2][2],在32位系統下,a所用的內存空間為16
C. int **a[2][2]={0}
D.int **a[2][3]={{0,0},{0,0},{0,0}}
5、以下程序的運行結果是____B___A:0??B:1??C:5??D:2
union
{
struct
{
unsigned char c1:3;
unsigned char c2:3;
unsigned char c3:2;
}s;
unsigned char c;
}u;
int main()
{
u.c=100;
printf("%d\n",u.s.c3);
return 0;
}
6、int a=5;則表達式++(a++);的結果為____D_____
A 、5??? B、6???? C、7??? D、表達式不正確
7、在C語言中, char型數據在內存中的存儲形式是:____d____
A補碼B、反碼C、原碼D、ASCII碼
8、逗號表達式(a=5*5,a+20),a+15的值是__B__。
A、35????? B、40?????? C、55??????? D、20
*********************************************************
1、? 常用的互聯網協議是TCP/IP協議,應用層協議有那些:http,https,ftp,tftp,dns,sip ,telnet,rtp
2、? 指針函數和函數指針的含義、區別
函數指針是指向一個函數的指針,可以通過指針調用該函數。如:
int f( int );?????int (*pf)( int ) = &f;?//&是可選的,因為函數名被使用時總是由編譯器把它轉換為函數指針。
函數指針有兩個用途:調用函數和做函數的參數
--------------------------------------------------------------------------------------------
指針函數:程序中的每個函數都位于內存中的某個位置,所以存在指向那個位置的指針是完全可能的。
指針函數是指函數的返回值類型是一個指針類型,即本質是一個函數。
int *f( int );?????????????????????????? //函數返回值是指針類型
3、#ifndef #define#endif的典型作用是什么?
防止重復編譯
一般用來防止重復包含頭文件
4、指針常量和常量指針
a)????????常量指針:常量是形容詞,指針是名詞,首先是個指針,即指向常量的指針。指針所指向的值不能修改。如:
在C/C++中,常量指針是這樣聲明的:
1)const int*p;
2)int const *p;
b)????????指針常量:指針是形容詞,常量是名詞。即本質是一個常量,而用指針修飾它,那么說明這個常量的值應該是一個指針。指針常量的值是指針,這個值因為是常量,所以不能被賦值。
1.????????int a;
int *const b = &a;????? //const放在指針聲明操作符的右側
c)????????指向常量的指針常量
指向常量的指針常量就是一個常量,且它指向的對象也是一個常量。因為是一個指針常量,那么它指向的對象當然是一個指針對象,而它又指向常量,說明它指向的對象不能變化。
const int a = 25;
const int * const b = &a;
5、把一個unsigned short a的變量的高8位和低8位的值互換,用#define
#include
#defineswap(a) ( ( a << 8 )|( a >>8) )
voidmain()
{
unsigned short a = 0x1234;
a=swap(a);
printf("%x",a);
}
6、void main()
{
inta=1;
printf("%d,%d,%d\n",a++,a++,a++);
printf("%d\n",a);
}
輸出:
3,2,1
4
printf把要打印的變量入棧,最后的變量在棧頂,先計算,即先處理后面的那個a++,依次往左。
7、//a[10],用指針實現,找出數組中最大的值,并輸出該最大值
#include
void main()
{
inta[10] = { 10,3,2,5,1,7,44,54,2};
int*p ;
int*s;??????????????????????????????????//記錄最大值
for(p = a, s = a; p
{
if(*p> *s)
*s= *p;
}
printf("%d\n",*s);
}
8、要對絕對地址0x100000賦值,我們可以用(unsigned int*)0x100000 = 1234;那么要是想讓程序跳轉到絕對地址是0x100000去執行,應該怎么做?
答案:( ( void (*)( ) )0x100000 ) ( )或者( *( void (*)( ) )0x100000 ) ( )首先要將0x100000強制轉換成函數指針,即: (void(*)())0x100000然后再調用它: ( *( void (*)( ) )0x100000 ) ( );用typedef可以看得更直觀些:typedef void(*)() voidFuncPtr; (* (voidFuncPtr)0x100000)();
9、關鍵字volatile有什么含義?并給出三個不同的例子。
對于volatile類型的變量,該變量可能會被意想不到地改變,這樣編譯器就不會去假設這個變量的值。編譯器在用到這個變量的時候,必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。如下三種例子:
1)、并行設備的硬件寄存器(如:狀態寄存器)
2)、一個中斷服務子程序中會訪問到的非自動變量
3)、多線程應用中被幾個任務共享的變量
10、sizeof和strlen
sizeof()計算括號里的內容所占的內存,如果是字符串,計算‘\0’
strlen()只能接受字符串,不計算’\0’;
11、一語句實現x是否為2的若干次冪的判斷
#define is2*n(x)? ((x & (x- 1))? 0 : 1)
12、用#define實現一個unsigned short a,高8位和低8位互換
#define swap(a) (? a >> 8) || ( a << 8 )
13、用宏定義實現swap(a,b),交換兩個數值
#define swap(x,y) do{x=x+y; y = x-y; x= x-y;}while(0)
或者
#define swap(x,y) \
x=x+y;\
y=x-y;\
x=x-y;
12、?優先級反轉
總結
以上是生活随笔為你收集整理的则执行C语言语句unsigned,部分C语言题目的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 中超联赛提交函数的c语言,国家体育总局
- 下一篇: c语言求随机数的中位数,定义一个随机变量
