编程论坛

 找回密码
 立即注册
广告联系qq1031180668广告位
查看: 794|回复: 0

[c/c++] c++对c语言的扩展-类型增强

[复制链接]
  • ta_mind

    2018-8-17 21:57
  • classn_01: 71 classn_02

    [LV.6]常住居民II

    983

    主题

    1704

    帖子

    3369

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3369

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-1-10 22:14:35 | 显示全部楼层 |阅读模式
    c++对c语言的扩展-类型增强

    1.类型检查更严格
    [C] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    int main()
    {
    	const int a = 1;
    	int b = a;
    	const int *pa = &a;
    	int *pb = pa;
    
    	return 0;
    }

    c++对c语言的扩展-类型增强

    c++对c语言的扩展-类型增强

    这段代码在c语言中是可以编译通过的,但是我们把源文件后缀改为cpp用c++的方式再编译就会发现错误,

    c++对c语言的扩展-类型增强

    c++对c语言的扩展-类型增强

    把一个 const 类型的指针赋给非 const 类型的指针在c++中是编译不通过的。



    2.布尔类型
    [C++] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    int main()
    {
    bool flag = true;
    if(flag != false)
    {
    printf("i know bool type now\n");
    }
    printf("bool size = %d\n",sizeof(bool));
    return 0;
    }

    c++对c语言的扩展-类型增强

    c++对c语言的扩展-类型增强

    c 语言的逻辑真假用 0 和非 0 来表示。而 c++中有了具体的类型,占用一个字节。

    3.真正的枚举

    [C++] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    enum  season{ SPR, SUM, AUT, WIN };
    int main()
    {
    	enum season s = SPR;
    	s = 0;
    
    	return 0;
    }

    c++对c语言的扩展-类型增强

    c++对c语言的扩展-类型增强

    c++对c语言的扩展-类型增强

    c++对c语言的扩展-类型增强

    这段代码在c语言中可以通过,在c++中则编译不通过,c语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而 c++中枚举变量,只能
    用被枚举出来的元素初始化。

    4.表达式的值可被赋值

    比如:

    [C++] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    int main()
    {
    	int a, b = 5;
    	(a = b) = 10;
    	(a<b ? a : b) = 200;
    	
    	return 0;
    }

    表达式赋值.png
    表达式赋值1.png

    c语言中表达式通常不能作为左值的,即不可被赋值,c++中某些表达式是可以赋值的。


    不积跬步,无以至千里
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|Archiver|小黑屋|sitemap|编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号 )

    GMT+8, 2018-12-19 15:07 , Processed in 1.112694 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表