当前位置: 首页 > news >正文

C开发环境与基础

  • C开发工具
    Clion 、vscode,工具破J略不同于IDEA,网上找了一个plugin BetterIntelliJ 离线安装即可
  • 运行环境
    Toolchain之MinGW ,建议x86_64-posix-sjlj

1.基本类型

1.1整型

整型有几个子类型,默认有符号signed,无符号可表示的最大值翻倍,int可省,极值在头文件limits.h定义,如ULLONG_MAX:unsigned long long 的最大值
unsigned short int a;
unsigned long int b;
unsigned long long int c= 1234ULL;(类似Java的后缀)
不同位数系统short long longlong字节宽度可能不同,stdint.h定义了屏蔽系统差异的便移植类型如int32,如果系统int类型为32位,int32_t就会指向int;如果long类型为32位,int32_t则会指向long;其它还有int_least8_t、int_fast8_t、intptr_t(存放指针的整型)等

1.2. 布尔

0=false;非0=true,引入stdbool.h才能使用true/false关键字,可以与0/1互换

1.3.其它

字符、浮点数类似Java,C也可以进行隐式显示类似转换

溢出错误案例

 unsigned char xx = 255;
    xx=xx+1;
    printf("%d\n", xx); // 0
    xx=xx-1;
    printf("%d\n", xx); // 255
for (unsigned int i = n; i >= 0; --i) // 溢出导致死循环
unsigned int i = 5;
unsigned int j = 7;

if (i - j < 0) // 错误
  printf("negative\n");
else
  printf("positive\n");
unsigned int ui;
unsigned int sum;

// 错误
if (sum + ui > UINT_MAX) too_big();
else sum = sum + ui;

// 正确
if (ui > UINT_MAX - sum) too_big();
else sum = sum + ui;

2.指针类型

  • 传入指针,即指向int p的地址,故对该地址的p修改函数外也能获取修改后的值,类似Java引用传递
void increment(int* p) {
  *p = *p + 1;
}
  int x=1;
  increment(&x);//传入x的地址
  printf("%d",x);//2
  • *运算符为取内存地址的值,&p为取p的内存地址 p == *(&p)
  • 指针运算
int* p;
*p = 1; // 错误,指针类型默认执行随机地址,不能读写;初始化后的指针可以加减整数表示指针移动;
short* j1;
short* j2;
j1 = (short*)0x1234;
j2 = (short*)0x1236;
ptrdiff_t dist = j2 - j1; //一种带符号的整数类型
printf("%d\n", dist); // 指针不能相加但可以相减,表示它们的距离,这里距离为1(但是内存地址相差2个bit),2个字节正好存放1个 short 类型的值

相关文章:

  • Android系统_MSM8953_android10_adb连接adbd加入密码检测
  • 23设计模式之 --------- 什么是设计模式?
  • 在以「基础设施」为定位的发展阶段里,产业变成了一个可以有诸多创新的存在
  • Vue相关面试题(1)
  • 基于SpringBoot的网上购物商场管理系统
  • Python——time模块
  • 【深度学习】卷积神经网络的架构参考 以MNIST数据集为例(未调节架构)测试集正确率: 98.66%
  • C++ 哈希桶模拟实现(补充)
  • Rethinking the Inception Architecture for Computer Vision--Christian Szegedy
  • 安卓毕业设计成品基于Uniapp+SSM实现的智能课堂管理APP在线学习网
  • 基于metaRTC嵌入式webrtc的H265网页播放器实现(我与metaRTC的缘分)
  • 【设计模式】Java设计模式 - 组合模式
  • Android之Handler(上)
  • 网络协议:网络安全
  • php防止SQL注入的网上二手交易平台的设计与实现毕业设计-附源码241552
  • 收藏网友的 源程序下载网
  • 2018一半小结一波
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • es的写入过程
  • express如何解决request entity too large问题
  • FineReport中如何实现自动滚屏效果
  • IOS评论框不贴底(ios12新bug)
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • js算法-归并排序(merge_sort)
  • Linux CTF 逆向入门
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux后台研发超实用命令总结
  • log4j2输出到kafka
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • PHP那些事儿
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • 测试如何在敏捷团队中工作?
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 后端_ThinkPHP5
  • 技术发展面试
  • 检测对象或数组
  • 手写一个CommonJS打包工具(一)
  • 思考 CSS 架构
  • 我与Jetbrains的这些年
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 译有关态射的一切
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • (003)SlickEdit Unity的补全
  • (1) caustics\
  • (C++17) std算法之执行策略 execution
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • .Net Core 中间件验签
  • .net mvc部分视图
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net反编译工具