常量表示方法不同

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设计模式之:观察者模式

    转载自php面向对象设计模式 之 观察者模式 问题 假如一个小贩, 他把产品的价格提升了, 不同的消费者会对此产生不同的反应.一般的编程模式无非是获取提升的价格,然后获取所有的消费者,再循环每个消费者 ...

  2. 利用C#轻松创建不规则窗体

    1.准备一个不规则的位图 可以使用任意一种你喜欢的作图工具,制作一个有形状的位图,背景使用一种其他的颜色.这个颜色在编程中用得着,所以最好使用一种容易记忆的颜色.如黄色,文件名为bk.bmp 2.创建 ...

  3. Struts2 注解(转)

    转自:http://blog.csdn.net/wwwqvod/article/details/6214431 也叫Zero Configuration(零配置),它省去了写xml文件的麻烦,可以直接 ...

  4. 8 个优秀的 Linux 图形图像及色彩工具

    8 个优秀的 Linux 图形图像及色彩工具 1. 硬件色彩分析器LPROF LPROF 是一个用于创建设备兼容,如相机.扫描仪.显示器的ICC兼容型材的颜色分析器.这些配置提供跨设备的色彩一致性.他 ...

  5. 【转】Logistic regression (逻辑回归) 概述

    Logistic regression (逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性.比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等 ...

  6. 如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接

    前期准备: 关于什么是Hierarchy Viewer,请查看官方文档:http://developer.android.com/tools/debugging/debugging-ui.html.个 ...

  7. 普林斯顿大学算法课 Algorithm Part I 学习资源

    网友笔记参考 果壳Mooc首页 revilwang的专栏 白色咖啡 Weiran Liu的渣技术小专栏 Bug表:http://findbugs.sourceforge.net/bugDescript ...

  8. nova availability zone

    find a bug: at first there is only one zone. create aggregate host1 in zone1 create aggregate host1 ...

  9. docker制作node程序镜像:

    准备: 需要5个文件 新建一个docker文件夹 1 .ignore git忽略文件用的 2 pakage.json 安装NODE程序的 也可以直接拷贝进 docker文件加 3 node环境 lin ...

  10. 前端新人学习笔记-------html/css/js基础知识点(三)

    这断时间家里有点事,上班也有点任务,所以几天没看视频没来更新了.今天来更新一下了. 一:默认样式重置 但凡是浏览默认的样式,都不要使用. body,p,h1,h2,h3,h4,h5,h6,dl,dd{ ...