常量表示方法不同

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. 05-3. 求a的连续和(15)

    输入两个整数a和n,a的范围是[0,9],n的范围是[1,8],求数列之和S = a+aa+aaa+...+aaa...a(n个a). 如a为2.n为8时输出的是2+22+222+...+222222 ...

  2. VS2008下WinRar源码生成dll和 lib总结

    WinRar官方提供了源码(http://www.rarlab.com/rar_add.htm):如果自己想要修改里面的内容就要重新生成DLL和LIB,我在网上找了很多资料都没有说得很清楚.花一两天的 ...

  3. css案例学习之全局声明*{} 与body{}的区别

    代码 <html> <head> <title>全局声明</title> <style type="text/css"> ...

  4. POJ 2429 GCD & LCM Inverse(Pollard_Rho+dfs)

    [题目链接] http://poj.org/problem?id=2429 [题目大意] 给出最大公约数和最小公倍数,满足要求的x和y,且x+y最小 [题解] 我们发现,(x/gcd)*(y/gcd) ...

  5. 普林斯顿大学算法课 Algorithm Part I Week 3 自我总结

    要熟练掌握比较器Comparator public final Comparator<T> MY_COMPARATOR = new myComparator(); //定义比较器 .... ...

  6. iOS学习,需要懂的一些基础

    1.  KVC 与 KVO 全称是Key-value coding,翻译成键值编码.顾名思义,在某种程度上跟map的关系匪浅.它提供了一种使用字符串而不是访问器方法去访问一个对象实例变量的机制. 全称 ...

  7. C#性能优化实践【转】

    性能主要指两个方面:内存消耗和执行速度.性能优化简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短. 本文以.NET平台下的控件产品MultiRow为例,描述C# ...

  8. jQuery学习笔记(一)——基础选择器、过滤选择器、表单选择器

    $()就是jQuery中的函数,它的功能是获得()中指定的标签元素.如演示样例中$("p")会得到一组P标签元素,当中"p"表示CSS中的标签选择器.$()中的 ...

  9. 把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式

    临床表现: Tomcat启动后首页能訪问(http://localhost:8080/). 将自己写的一个webprojectwar包放到Tomcat安装文件夹下的/webapps以下(比方hello ...

  10. oracle 命令创建用户 、授权、数据库导入、导出

    最近在使用oracle,经常要导入导出数据,命令很简单,却经常忘记,所以记下来.. drop user yfplss cascade;--登录system用户删除已存在的用户名,该用户下的所有东西都被 ...