⑴ 救命啊!!!!!!!分析下个C程序 基础题
因为立即数默认是整型数啊, 你改成1.0/2.0就好了啊.
关于s2, 因为h被声明成浮点类型, 所以就按浮点运算了
⑵ C语言中 怎样define 长整形
回看问题补抄充:这也没有办法呀,你可以试图换一个编译器,不要用TC,32位的编译器一般都可以满足你的要求。我只会C++,不知道C,您所说的(1024 * 1024) & 0xffff我也不是特别清楚。所以我只知道的是,C++之所以不让我们用#define可能就是这个缘故吧,呵呵,在C++中实现您的代码就可谓是轻而易举:
const int AAA = 1024;
const int BBB = 1024;
const int DDD = 100;
const int EEE = 200;
const int FFF = AAA*BBB;
const int CCC = FFF / (DDD+EEE);
const int i_32_sz[] = {CCC, DDD};
⑶ c语言中,常量到底占不占内存空间
宏定义不占内存空间,因为宏在预处理阶段就会被替换掉,到了编译的阶段是没有宏存在的,它自然到不了可执行文件中,所以它不占内存空间。
字面常量,占不占空间要看情况,我不知道c语言标准中是否对此事作出规定,我就谈谈gcc的处理方法吧,这个设计汇编的问题。
int a;
a = 5;将这段反汇编,得到
可以看到,5是以立即数的形式出现的,所以它不占内存。
然后再将a定义为float:
float a;
a = 5.0;
可以看到,程序的最后定义了5.0的单精度浮点表示,然后将其传入eax寄存器,再赋值给a。
另外,字符常量不占内存空间,字符串常量占内存空间。总之,整形常量是不占空间的,其他占。
⑷ C语言整型常量转化问题
首先要明白c语言的常量表达什么?我们才能了解它的问题是什么:
常量:其值不会发生改变的量,称为常量。它们可以和数据类型接合起来分类。比如:整形常量,浮点型常量,字符常量等等,常量是可以不经过定义和初始化,而直接引用的。
常量分类:常量又分为:直接常量和符号常量。
直接常量又叫做:字面常量。如12,0,4.6,’a’,”abcd”
符号常量:如宏定义的:#define
pi
3.14
特点:常量的值在其作用域内不会发生改变,也不能再被赋值。其在出现时就被当作一个立即数来使用。也就是说,只能被访问,被读,而不能被写,被赋值。
常量所在的内存空间就被加上了只读的属性,它有点类似于const关键字,那么它常见的问题如下:
(1) 可以定义const常量,具有不可变性。
例如:
const
int
max=100;
int
array[max];
(2) 便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:
void
f(const
int
i)
{
.........}
//编译器就会知道i是一个常量,不允许修改;
(3) 可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4) 可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
还是上面的例子,如果在函数体内修改了i,编译器就会报错;
例如:
void
f(const
int
i)
{
i=10;//error!
}
(5) 为函数重载提供了一个参考。例如:
class
a
{
......
void
f(int
i)
{......}
//一个函数
void
f(int
i)
const
{......}
//上一个函数的重载
......
};
⑸ C语言里怎样理解长整型 短整型 和无符号型变量和常量
1、变量:抄是一块内存区域,一块内存包含两个属性,一个是地址,一个是存储的内容,即值。所以在c语言中每个变量都有一个地址,也有自己存储的内容。
2、常量:指的是不会被修改的量,这个概念实际上来自汇编语言中的立即数概念,它是存储于指令代码中的。
3、整型:用于描述整数的数据类型。
4、长整型、
短整型
、无符号整型,主要是通过整数的符号以及所占内存字节的大小来区分的,做为整数可以分为正数和负数,因此C语言中有了无符号数和有符号数的区别,无符号整型,最小值是0,最大值为2^n-1,n是在内存中类型所占的字节数。
一般来说,int类型占4个字节,short短整型占2个字节,long长整型占4或者8个字节。具体所占字节的大小可以通过sizeof运算符来获取。
⑹ 什么叫非显式的整型立即数
理解一:8位扩展到32位,若为正数或0,对高24位全部补0;若为负数,对高24位全部补1。这样,原来的8位立即数就扩展为等效的32位立即数。理解二:是将立即数放到32位的寄存器的低8位中,然后逻辑左移24次,可得到一个32位数。
⑺ 如何知道整型字面值常量的内存地址
不可以对整型字面常量取地址,因为它没有地址,它就是个立即数,它的暂存区域是寄存器,而不是内存
⑻ c++的一个表达式问题
如果你抄不是在研究编译原理、程序设计语言的话,这种问题就没必要深究。记着“在C++中不能取临时变量的地址”这样一个结论就够了。
临时变量是一个右值,编译器不一定要为它分配内存的。只有明明白白定义出来的变量,编译器才必须为它分配内存,这时取地址才有意义。
⑼ c语言整型常量问题
首先要明白C语言的常量表达什么?我们才能了解它的问题是什么:
常量:其值不会发生改变的量,称为常量。它们可以和数据类型接合起来分类。比如:整形常量,浮点型常量,字符常量等等,常量是可以不经过定义和初始化,而直接引用的。
常量分类:常量又分为:直接常量和符号常量。
直接常量又叫做:字面常量。如12,0,4.6,’a’,”abcd”
符号常量:如宏定义的:#define PI 3.14
特点:常量的值在其作用域内不会发生改变,也不能再被赋值。其在出现时就被当作一个立即数来使用。也就是说,只能被访问,被读,而不能被写,被赋值。
常量所在的内存空间就被加上了只读的属性,它有点类似于const关键字,那么它常见的问题如下:
(1)可以定义const常量,具有不可变性。 例如:
const int Max=100; int Array[Max];
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如:
void f(const int i) { .........} //编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:
void f(const int i) { i=10;//error! }
(5)为函数重载提供了一个参考。例如:
class A { ......
void f(int i) {......} //一个函数
void f(int i) const {......} //上一个函数的重载 ......
};