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 為帶回乙個指標...