常量表示方法不同

C不支持引用,C++支持

注释不同,C89不支持单行注释

(++i)++在C中不合法

(a=3)=4在C中不合法

不能在for循环头部定义变量

C++注重类型,强类型,严格检查类型

C类型检查不明确

//在C可以编译,在C++无法编译

//1>main.cpp(10): error C2440: “=”: 无法从“double *”转换为“int *”

//1> main.cpp(10): note: 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

 #include <stdio.h>
#include <stdlib.h> void main()
{
int *p1 = NULL; double *p2 = NULL; p1 = p2;//在C可以编译,在C++无法编译 //1>main.cpp(10) : error C2440 : “ = ” : 无法从“double *”转换为“int *”
// 1> main.cpp(10) : note : 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换 system("pause");
}

适用于宽字符串

wchar_t

std::wcout

 #include <iostream>
using namespace std; void main()
{
char *str("china");//字符串
wchar_t *str1(L"china");//宽字符串 std::cout << str << std::endl;
std::wcout << str1 << std::endl; system("pause");
}

//C++检测到右值在内存有实体,自动转换为左值

//C不会把右值转换为左值

(a = 3) = 4;

 #include <iostream>
using namespace std; //C++检测到右值在内存有实体,自动转换为左值 void main()
{
int a = ; std::cout << a << std::endl;// (a = ) = ; std::cout << a << std::endl;// system("pause");
}

((a > b) ? a : b) = 2;

 #include <iostream>
using namespace std; void main()
{
int a = ;
int b = ; std::cout << a << " " << b << std::endl;//3 5 ((a > b) ? a : b) = ; std::cout << a << " " << b << std::endl;//3 2 system("pause");
}

(++a)++;

 #include <iostream>
using namespace std; void main()
{
int a = ; std::cout << a << std::endl;// (++a)++; std::cout << a << std::endl;// system("pause");
}

//C全局变量有声明与定义的差别
//C++全局变量没有声明与定义的差别

//error C2086: “int a”: 重定义

 #include <iostream>
using namespace std; //C全局变量有声明与定义的差别
//C++全局变量没有声明与定义的差别 int a;//error C2086: “int a”: 重定义
int a;
int a;
int a; void main()
{ system("pause");
}

//C静态全局变量有声明与定义的差别
//C++静态全局变量没有声明与定义的差别

//error C2086: “int a”: 重定义

 #include <iostream>
using namespace std; //C静态全局变量有声明与定义的差别
//C++静态全局变量没有声明与定义的差别 static int a;//error C2086: “int a”: 重定义
static int a;
static int a;
static int a; void main()
{ system("pause");
}

//register在C++编译器做了优化,如果检测到取地址,就不会把它放到寄存器

 #include <iostream>
using namespace std; //register在C++编译器做了优化,如果检测到取地址,就不会把它放到寄存器 void main()
{
register int num(); std::cout << &num << std::endl; system("pause");
}

//C++编译宽泛
//为了修改源代码,后面留下拓展
//留空,用于占位

void test(int a, double, int)
{
std::cout << a << std::endl;
}

 #include <iostream>
using namespace std; //C++编译宽泛
//为了修改源代码,后面留下拓展
//留空,用于占位 void test(int a, double, int)
{
std::cout << a << std::endl;
} void main()
{
test(, 2.9, );// system("pause");
}

随机推荐

  1. PHP学习日记(一)——类、函数的使用

    一.自定义函数 function add($a,$b){ $c=$a+$b; echo 'add test:'; echo $c; return $c; } add(1,2); 输出结果: add t ...

  2. Python之路第三天,基础(3)-set,函数,内置函数,文件,三元运算,lambda

    set集合 集合是一个无序的,不重复的元素集合. 集合的创建: name_set = {'tom','jerry','alex','rose'} 或 name_set = set(['tom','je ...

  3. docker 运行挂载磁盘

    docker:/data# mkdir /awp docker:/data# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM ...

  4. ubuntu下perl SVG老是make失败

    解决方法是用libgd-svg-perl软件包代替.

  5. AndroidUI 视图动画-透明动画效果 (AlphaAnimation)

    1.新建一个Android项目,Activity添加一个按钮如下代码: <Button android:id="@+id/btnAiphaAnimation" android ...

  6. POJ2063 Investment 【全然背包】

    Investment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8019   Accepted: 2747 Descri ...

  7. 构建一个用于产品介绍的WEB应用

    为了让用户更好地了解您的产品功能,您在发布新产品或者升级产品功能的时候,不妨使用一个产品介绍的向导,引导用户熟悉产品功能和流程.本文将给您介绍一款优秀的用于产品介绍的WEB应用. 就像微博或邮箱这类W ...

  8. 理解数据点,自变量和因变量(参数和值)ChartControl

    WinForms Controls > Controls > Chart Control > Fundamentals > Charting Basics > Under ...

  9. AngularJs(三) deployd 服务的使用

    使用服务建立数据 在AngularJS(二)中,我搭建好了deployd服务,现在启动服务,创建正在的数据(开始是使用模拟数据),使用cmd命令 一.开启Mongodb数据. 贴图: 二:测试是否正常 ...

  10. SqlServer2008 数据库可疑

    今天遇到数据库可疑,以前都是直接删了还原,这次没有最新的备份文件,一起看看脚本怎么解决 --最好一句句执行,方便看到错误 USE MASTER GO --开启数据库选项"允许更新" ...