【建站服务】石河子淘宝装修/石河子京东店铺设计/石河子拼多多网店装修公司/石河子企业网店开通申请-网店装修设计-域名申请
作者: 风兰 . 阅读量: 4 . 发表时间:2022-09-21 05:42:13
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
石河子淘宝装修/石河子京东店铺设计/石河子拼多多网店装修公司/石河子企业网店开通申请-网店装修设计

以下是一个求矩形面积的例子:
#include <stdio.h>
#define LENGTH 10+10
//正确写法 #define LENGTH (10+10)
#define WIDTH 5
#define NEWLINE ' '
int main(){
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
return 0;
}
以上实例输出结果为:
value of area : 60
所以如果我们需要得到正确结果应该将 #define LENGTH 10+10 修改为 #define LENGTH (10+10)。
哈哈
哈哈
253***721@qq.com
4年前 (2018-07-24)
I'am AI
135***3072@qq.com
参考地址
49
在 C 语言中,单引号与双引号是有很大区别的。
在 C 语言中没有专门的字符串类型,因此双引号内的字符串会被存储到一个数组中,这个字符串代表指向这个数组起始字符的指针;
而单引号中的内容是一个 char 类型,是一个字符,这个字符对应的是 ASCII 表中的序列值。
I'am AI
I'am AI
135***3072@qq.com
参考地址
4年前 (2018-08-11)
糖糖
267***6702@qq.com
51
四种进制说明:
在二进制中只有 0、1 两种情况,你不会看到比 1 大的数字。二进制是逢 2 就进位,所有数字中没可能有 2 或大于 2 的数字,
在八进制中有 0、1、2、3、4、5、6、7这八种情况,你也不会看到比7大的数字。八进制是逢8就进位,所有数字中没可能有8或大于8的数字。
在十进制中有0、1、2、3、4、5、6、7、8、9这十种情况,你更不会看到比9大的数字。十进制是逢10就进位,所有数字中有0~9都有
在十六进制中有 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中 A 表示 10;B 表示 11;C 表示 12;D 表示 13;E 表示 14;F 表示 15。十六进制数字中含有 A~F 字母,它是 0~9+A~F
糖糖
糖糖
267***6702@qq.com
4年前 (2018-10-11)
CHANYEOLoblist
112***6161@qq.com
参考地址
43
浮点型常数
1.十进制小数形式
它由数字0-9、小数点和+、-号组成,例如3。14、-23.56都是十进制小数
2.指数形式
它由数字0-9、字母e(或E)和+、-号组成,它的形式为aEn,意为a✖️10^n,其中a为十进制整数或小数,n为十进制整数。在表示浮点型畅常量时,需注意几点:
(1)以指数形式表示实数时,a和n都不能省略,n必须为整数。
(2)以十进制小数形式表示实数时,整数和小数部分可省略其中任一个
(3)浮点型常量默认是double型,如果在后面加上F或f,则其类型为float实数在机内是以指数形式存储的,以float类型为例,大多数C编译系统使用4个连续的字节(即32位)存储在float类型数据。这32位分为4个部分,最高位为数的符号,接着使用若干位存储小数的部分,然后是指数的符号位,最后一个部分是指数。在4个字节中,究竟小数部分和指数部分分别占多少位,ANSI C 本身并没有作规定,由具体的C语言编译系统自定。不少C语言编译系统用24位表示数符号和指数部分。
由实数的存储形式可看出,小数部分占的位数越多,所能表示的精度越高,指数部分占的越多,所能表示的数值范围越大。
CHANYEOLoblist
CHANYEOLoblist
112***6161@qq.com
参考地址
3年前 (2020-01-31)
Dr千城暮雪
dre***u0328@qq.com
22
其实不需要看楼上的复杂解释,所谓的预处理其实就是在编译前将源代码中相应的字符串单词替换成定义的另一个字符串单词。
比如:
#define PI 3.14159
area = PI * r * r;
编译时预处理后为:
#define PI 3.1415926
area = 3.14159 * r * r;
此时常量是不可能存储在内存中的。
而 const 是作为修饰词对变量进行修饰,即为“只读”变量,是单独存储在内存中的。
const double PI = 3.14159;
在大部分 IDE 中(如 VS,Dev 和配置好的 VScode)可以使用单步调试看到一个变量 PI 值为 3.14159。
const 的另一个限制是在定义变量时就需要初始化赋值,在后文赋值会报错。
Dr千城暮雪
Dr千城暮雪
dre***u0328@qq.com
8个月前 (12-27)
conTrue
con***e@163.com
15
正确理解 #define 的别名机制。
实例:
求 a 的值:
#include <stdio.h>
#define SQR(x) x*x
int main()
{
/* 我的第一个 C 程序 */
int a=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("a=%d",a);
}
输出结果:
a=2
是不是跟我们想象的结果不太一样?
那么看一下你想象得结果:
#include <stdio.h>
int SQR(int x)
{
return x*x;
}
int main()
{
int a=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("a=%d",a);
}
结果:
a=16
总结:#define 的声明 只是一个别名,并不会改变其内在逻辑,也就是不会自动加上小括号增加优先级。
附上其逻辑:
∵ SQR(x) x*x
又∵ a=16,k=2,m=1
∴SQR(k+m)/SQR(k+m)=2+1*2+1/2+1*2+1
∴原式=2+2+0.5+2+1
=6+1.5
=7.5
=(int)7.5=7
故:a/=SQR(k+m)/SQR(k+m) = a/7=16/7=2
石河子淘宝装修/石河子京东店铺设计/石河子拼多多网店装修公司/石河子企业网店开通申请-网店装修设计
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站



#define 是宏定义,它不能定义常量,但宏定义可以实现在字面意义上和其它定义常量相同的功能,本质的区别就在于 #define 不为宏名分配内存,而 const 也不为常量分配内存,怎么回事呢,其实 const 并不是去定义一个常量,而是去改变一个变量的存储类,把该变量所占的内存变为只读!
GHAKER
135***2092@qq.com
李大明白
740***481@qq.com
反斜杠() 开头是叫转义序列(Escape Sequence)。
ooo 是对用三位八进制数转义表示任意字符的形象化描述。
比如 char ch = 'A'; 等价于 char ch = 0101; (以0开头的表示八进制)。
xhh 里面是 x 是固定的,表示十六进制(hexadecimal),h 也表示十六进制。
举例,char ch = 'A'; 就是用十六进制来表示,它与前面的 A 是等价的。
可用如下代码证明它们等价:
#include <stdio.h> int main(){ printf("%c,%c,%c,%c", 0101, 'A', 'A', 'A'); return 0;}李大明白
740***481@qq.com
sanshi
san***qq.com
const 定义的是变量不是常量,只是这个变量的值不允许改变是常变量!带有类型。编译运行的时候起作用存在类型检查。
define 定义的是不带类型的常数,只进行简单的字符替换。在预编译的时候起作用,不存在类型检查。
1、两者的区别
(1) 编译器处理方式不同
(2) 类型和安全检查不同
(3) 存储方式不同
(4) const 可以节省空间,避免不必要的内存分配。 例如:
const 定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象 #define 一样给出的是立即数,所以,const 定义的常量在程序运行过程中只有一份拷贝(因为是全局的只读变量,存在静态区),而 #define 定义的常量在内存中有若干个拷贝。
(5) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
(6) 宏替换只作替换,不做计算,不做表达式求解;
宏预编译时就替换了,程序运行时,并不分配内存。
sanshi
san***qq.com
#define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。(宏定义不分配内存,变量定义分配内存。)
const常量会在内存中分配(可以是堆中也可以是栈中)。
#define 宏没有类型,不做任何类型检查,仅仅是展开。
const 常量有具体的类型,在编译阶段会执行类型检查。
#define 宏是在预处理阶段展开。
const 常量是编译运行阶段使用。
哈哈
253***721@qq.com
define 注意“边缘效应”,例:#define N 2+3, N 的值是 5。
在编译时我们预想 a=2.5,实际打印结果是 3.5 原因是在预处理阶段,编译器将 a=N/2 处理成 a=2+3/2,这就是 define 宏的边缘效应,所以我们应该写成 #define N (2+3)。
#include <stdio.h>#define N 2+3//正确写法 #define N (2+3)int main(){ double a ; a = (float)N/(float)2; printf("a 的值为 : %.2f", a); return 0;}以下是一个求矩形面积的例子:
#include <stdio.h>#define LENGTH 10+10//正确写法 #define LENGTH (10+10)#define WIDTH 5#define NEWLINE ' 'int main(){ int area; area = LENGTH * WIDTH; printf("value of area : %d", area); printf("%c", NEWLINE); return 0;}以上实例输出结果为:
所以如果我们需要得到正确结果应该将 #define LENGTH 10+10 修改为 #define LENGTH (10+10)。
哈哈
253***721@qq.com
I'am AI
135***3072@qq.com
参考地址
在 C 语言中,单引号与双引号是有很