Chinaunix首页 | 论坛 | 博客
  • 博客访问: 202368
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 824
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-12 21:40
个人简介

只有今天的埋头,才有明天的出头。

文章分类

全部博文(80)

文章存档

2014年(80)

我的朋友

分类: C/C++

2014-10-31 09:59:04

C++更强调语言的实用性,所有的变量都可以在需要实用时再定义,c语言中的变量都有必须在作用域开始的位置定义。

Register关键字请求编译器将局部变量存储于寄存器中,c语言中无法取得register变量的地址,c++编译器有自己的优化方式,不使用register也可能

做优化,c++编译器发现程序中需要register变量的地址时,register 对变量的声明变得无效。


c中重复定义多个同名的全局变量时合法的,在c++中不允许定义多个同名的全局变量,c语言中多个同名的全局变量最终会链接到全局数据区的

一个地址空间上。


C++
编译器对从const常量的处理:当碰见常量声明时在符号表放入常量,编译过程中若发现使用常量则直接以符号表中的值替换,编译过程中若

发现const使用了extern或者&操作符,则给对应的常量分配存储空间。


C
语言中的const变量是只读变量,有自己的存储空间,c++中的const常量可能分配空间:当const常量为全局并且需要在其他文件中使用,使用&

操作符取const常量的地址。


C++
中的const常量类似于宏定义,c++中的const常量在与宏定义不同:const常量是由编译器处理的提供类型检查和作用域检查,宏定义由预处

理器处理单纯的文本替换。


C
中的struct定义了一组变量的集合,c编译器并不认为这是一种新的类型,c++中的struct是一个新类型的定义声明。


C++
中所有的变量和函数都必须有类型,c中的默认类型在c++中是不合法的。


c中,int f()表示返回值为int,接受任意参数的函数int f(void)表示返回值为int的无参函数,在c++int f()int f(void) 具有相同的意义,都表

示返回值为int的无参函数。

C++c的基本类型系统之上增加了boolC++中的bool可取的值只有truefalsetrue代表真值,编译器内部用来表示,False代表假,编译器内部

表示。


理论上bool只占用一个字节,如果多个bool变量定义在一起可能会各占一个字节。


C++编译器会在赋值时将非0值转换为true0值转换为false


 

C中三目运算符返回的是变量值,不能作为左值使用,c++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方,三目运算符可

能返回值中如果有一个是常量值,则不能作为左值使用。


 

阅读(1265) | 评论(0) | 转发(0) |
0

上一篇:C语言与数据结构

下一篇:C++引用

给主人留下些什么吧!~~