有關C 語言資料型別的常見幾個試題

2021-06-13 23:13:16 字數 1561 閱讀 7105

1、賦值運算符合自增運算子的使用

short s1 = 1; s1 = s1 + 1;

short s1 = 1; s1 += 1;

上面兩行**能否正常編譯?

答:對於「short s1 = 1; s1 = s1 + 1;」,由於s1+1的運算結果為int型別,所以需要強制型別轉換;而後一行中s1 += 1;系統在編譯時直接隱式轉換,則可正確編譯。

2、已知變數x的初值為24,則表示式x+=x--+=x%=17運算的結果值為()      a. 28     b.27    c.  26   d.錯誤的表示式

答:d,因為--為一元運算子,優先順序高於+=和%=,於是先計算x--,此時x=23,而%=優先順序高於+=,所以計算x%=17,結果為6,此時整個表示式變為x+=24+=6,因為賦值操作符的左運算元必須是變數、屬性、索引器或事件型別的表示式,所以該表示式是錯誤的。

3、is和as的區別

答:is運算子用於判斷型別時,返回true/false;而as運算子用於兩個物件之間的型別轉換,當轉換失敗時,返回null,不會引發異常。

4、const和readonly有什麼區別?

答:c#提供兩種型別的常量,一種為const宣告的,一種為readonly宣告的。const關鍵字用來宣告編譯時的常量,是真正的常量,而readonly用來宣告執行時的常量,實際上是」唯讀的變數「,在執行時被初始化,該操作只能進行一次,一般在宣告中進行或者建構函式中進行。

5、引用型別和值型別的區別?

答:引用型別儲存在堆上,包含乙個指向例項的指標,預設賦值為null;值型別儲存在棧上,儲存的是乙個實際的值,未賦值前不同值型別有不同的預設值,但都不能為空。

6、寫出資料型別轉換(至少4種)的方法,**舉例。

答:顯示轉換: int i = (int)1.30;

隱式轉換:long l = 2;

int/double/float.parse方法轉換:string s = "13";  int i = int.parse(s);

convert轉換:int x = 13;  double d  = convert.todouble(x);

7、什麼是裝箱拆箱,舉例說明?

答:裝箱是吧值型別轉換成引用型別的過程,例如:」int i=10; object obj = i;";拆箱是指由引用型別轉換為值型別的過程,例如「int j = (int)obj;」。

8、下面這段**輸出什麼?為什麼?

int i=5;

int j=5;

if(object.referenceequals(i,j))

console.writeline("相等");

else

console.writeline("不相等");

答:輸出不相等,因為比較的是物件。object類中有兩個方法--equals和referenceequals,其中equals是判斷兩個例項是否相等,而referenceequals是判斷兩個例項是否為同例項。

9、簡述堆和棧的區別。

答:棧是編譯期間就分配好的記憶體空間,因此**中必須就棧的大小有明確的定義;堆是程式執行期間動態分配的記憶體空間,可以根據程式的運**況確定要分配的堆記憶體的大小。

幾個常見資料型別

簡單 輸入乙個數三次機會猜大小 n 66 count 1 while count 3 user ipnut int input 請輸入乙個數 if user ipnut n print 你猜小了 elif user ipnut n print 你猜大了 else print 恭喜你猜對了 break...

C語言常見資料型別分類

基本資料型別,做的不好僅供參考!資料型別分類大致分為三大板塊 a 基本型別 b 列舉型別 enum 空型別 void c 派生型別 a 基本型別 1 整型型別 1 基本整型 int 用整數的補碼方式存放,編譯系統分配給int型資料2個位元組或4個位元組。簡易來談就是乙個正數的補碼是此數的二進位制,如...

C 有關指標的資料型別小結

定義 含義int i 定義整型變數 int p 為指向整型資料的指標變數 int a n 定義整型陣列 它有 個元素 int p n 定義指標陣列 它由 個指向整型資料的指標元素組成 int p n 為指向含 個元素的一維陣列的指標變數 int f 為帶回整型函式值的函式 int p 為帶回乙個指標...