回覆列表
-
1 # gaoxing001
-
2 # 使用者6960220085704
提示的不是很明確了嗎,
const char *型別不能賦值給char *型別的變數。
你改成:
const char *c = "X";
不就行了。
這不是C語言,C++更嚴格。防止你透過char *型別的變數去修改字串字面值常量。
提示的不是很明確了嗎,
const char *型別不能賦值給char *型別的變數。
你改成:
const char *c = "X";
不就行了。
這不是C語言,C++更嚴格。防止你透過char *型別的變數去修改字串字面值常量。
變數:
變數的定義必須嚴格按照識別符號的命名規則,即0~9數字、字母、下滑線、$等組成,且首字母不能是數字、不能是java關鍵字。
·首字母必須小寫,當有多個單片語成時,後面的單詞首字母要大寫。
·變數名一般由名片語成。
·變數定義:[訪問修飾符][修飾符]資料型別 變數名[=初始值]。
eg:public static int a=0;
byte b=2;
常量:
常量的定義也要嚴格按照識別符號的定義規則。
·常量需要有final修飾符修飾。
·常量宣告時必須初始化。
·常量的值是不可改變的量、一次賦值,永不改變。
·常量識別符號必須大寫,且多個單詞時用下滑線連線。
注意:有時候常量也可以不用在宣告時就初始化。
eg:做區域性變數
public class Test
{
public static void main(String[] args)
{
final int Y;
Y=9;
}
}
做靜態全域性變數時,若宣告時不服初值,必須在靜態程式碼塊中賦初值。
static final int Y;
static
{
Y=9;
}
做非靜態全域性變數時,若宣告時不服初值,則必須在非靜態程式碼塊中賦值。
擴充套件資料:
1.常量:在程式執行的過程中其值不可以發生改變。
常量分為:字面值常量和自定義常量
這就是一個值,這個值本身,我們可以叫它常量。
整型常量:123
實型常量:3.14
字元型常量:’a’
邏輯常量:true、false
字串常量:”helloworld”
另一個說法是;表示不可變的變數,這也叫做常量,在語法上講,加上final關鍵字來修飾某個變數, 只要賦值後,就不能改變了,也就不能在對其進行賦值了,例如;
final int i=1;
那麼這個i的值是不能再改變了的,只能是1,所以是不可變的變數。(i是一個int型別的變數,變數值本身是可以重新賦值被改變的,但是現在加上了final,它就是一個最終的了,所以是一個不可變的變數。)
2.變數:在程式執行的過程中,在某個範圍內其值可以發生改變的量。
int a=10;
a=”briup”;
變數定義格式:資料型別 變數名=初始化值。
變數值是記憶體中的一塊地址,初始化值代表的是在這個地址中的一小塊區域。所以,使用變數名來訪問這塊區域,因此訪問每一個變數名之前都應先宣告該變數,然後在對其進行賦值。
3.變數和常量只有先聲明後才能使用。
轉換規則:從儲存範圍小的型別到儲存範圍大的型別。
具體規則為:byte→short(char)→int→long→float→double
也就是說 byte 型別的變數可以自動轉換為 short 型別,示例程式碼:
byte b=10;
short sh=b;
這裡在給sh賦值時,JVM首先將b的值轉換成short型別然後再賦值給sh。
當然,在型別轉換的時候也可以跳躍,就是byte也可以自動轉換為int型別的。
強制型別轉換
強制型別轉換,也稱顯式型別轉換,是指必須書寫程式碼才能完成的型別轉換。該類型別轉換很可能存在精度的損失,所以必須書寫相應的程式碼,並且能夠忍受該種
損失時才進行該型別的轉換。
轉換規則:從儲存範圍大的型別到儲存範圍小的型別。
具體規則為:double→float→long→int→short(char)→byte
語法格式為:(轉換到的型別)需要轉換的值
double d=3.14;
int i=(int) d;
注意問題:強制型別轉換通常都會儲存精度的損失,所以使用時需要謹慎。
浮點型預設為雙精度double
整型預設為int