編譯器能不能生成常量
❶ 在C++中,編譯器為const常量分配內存空間嗎
在c語言中,用const定義的常量其實是值不能修改的變數,因此會給它分配存儲空間;但是在C++中,const定義的常量要具體情況具體對待:對於基本數據類型的常量,編譯器會把它放到符號表中而不分配存儲空間,而ADT/UDT的const對象則需要分配存儲空間(大對象)。還有一些情況下也需要分配存儲空間,例如強制聲明為extern的符號常量或取符號常量的地址等操作。
❷ C語言 為什麼編譯器提示必須有常量值,到底哪錯了
matrix是一個數組,而定義一個數組的長度必須得是一個常量,也就是N,而你的N不是常量,所以將N定義為常量即可
❸ 編譯器如何能把常量編譯在代碼段
常量折疊。
常量折疊,就是說在編譯期間,如果有可能,多個變數的計算可以最終替換為一個變數的計算,通常是多個變數的多級冗餘計算被替換為一個變數的一級計算。
❹ 什麼是常量表達式 書里說,常量表達式是編譯器在編譯時就能夠計算出結果的表達式. 不太理解,
舉例:
int n = 1; //這是確定無疑的,1是常量表達式,不可能變化
另一個例子:
int x = n + 1; //編譯器並不能根據這句就推斷出x一定等於2,因為極有可能在其他地方改變n的值,因此編譯器就不敢保證它是常量
❺ c語言問題,
16位系統 int范圍是-32768~32767
而默認的整形常量都是int
其他三個答案全是用int計算,然後賦給long a
所以全部溢出了
只有在常量後加上L,讓編譯器生成long常量,才能夠正常運行
❻ C語言 變數,常量
變數是可以改變其值的對象
而常量就是不可以改變的對象,在C中用const定義
比如
int i=0;
const int j=0;
以上兩個對象,i和j,
i是變數,j就是常量,
你可以這樣做:
i=1;
也就是改變i的值
而不能這樣做
j=1;
也就是j的值是不能改變的
❼ C++中【數組的界】必須是編譯時可以求出的【常量表達式】
Mac上用的是Object c 。很像C#,有額外的內存優化機制,只用new不用delete的,,不行你用vc試試看,,
傳統c/c++在編譯函數體時,如果函數中遇到局部數組,編譯器會會將ESP向下移動相應長度,這個長度如果編譯器無法算出,將無法編譯,
假設當前進入了某個函數體,這個函數體中有一個數組char[12];
esp會向下多移動12,,
如果12不能確定,將無法形成匯編代碼
❽ 如何讓編譯器將特殊符號(比如)視為字元常量輸出
通常情況下,再特殊符號前邊加字元'\',如果要輸出的是「%d」則要在前面加上字元'%'
❾ 什麼是常量Java中,常量的定義規則有哪些
在Java語言中,主要是利用final關鍵字(在Java類中靈活使用Static關鍵字)來定義常量。