C专家编程复习摘要一

一、关于类型转换

    K&R C的不说了,说了还容易混淆,只说ANSI C的:

    如果其中一个操作数的类型是unsigned long int,那么另外一个操作数也被转换为unsigned long int。其次其中一个操作数的类型是long int,而另一个操作数的类型是unsigned int,如果long int能够完整表示unsigned int 的所有值,那么unsigned int 类型操作数被转换为long int ,如果long int 不能完整表示unsigned int 的所有值,那么两个数都被转换为unsigned long int 。再再次,如果其中一个操作数是unsigned int,那么另外一个操作数(int、char、unsigned char)被转换为unsigned int。所上情况以外,两个操作数都为int。

通俗来说:

    当执行蒜素运算时,操作数的类型如果不同,就会发生转换。数据类型一般操作浮点精度更高、长度更长的方向转换,整数型如果转换为singed不会丢失信息,就转换为singed,否则转换为unsigned。

看下面两个例子:

例1:小于号左右两边操作数都转换为int

 int main(){if (-1 < (unsigned int)1)printf("-1 is less than (unsinged int)1\n");elseprintf("-1 is not less than (unsinged int)1\n");return 0;}

例2:-1转换为unsigned int

 int main(){if (-1 < (unsigned int)1)printf("-1 is less than (unsinged char)1\n");elseprintf("-1 is not less than (unsinged char)1\n");return 0;}

二、几个怪异的声明标示符

volatile:

      它被设计用来修饰被不同线程访问和修改的变量。确保本条指令不会因编译器优化而省略,且要求每次直接读值。优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

register:

     register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。

三、关于sizeof

 #include <stdio.h>int main(){struct Test1{int i;char c;};struct Test2{char c;int i;};struct Test3{double d;char c;};struct Test4{char c;double d;};printf("test1:%d, test2:%d, test3:%d, test4:%d\n", sizeof(struct Test1), sizeof(struct Test2), sizeof(struct Test3), sizeof(struct Test4));return 0;}

在vs2008下输出结果为8、8、16、16,在下结果为8、8、12、12。

原因见这个地方:http://humanbeng.blog.163.com/blog/static/95932401201091623435337/


转载于:https://www.cnblogs.com/WIT-Evan/archive/2012/12/08/7291447.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296256.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一张图看懂华为计算全联接2020

全世界只有3.14 % 的人关注了爆炸吧知识END◆ 推荐阅读 ◆点击下方图片即可阅读华为邓泰华&#xff1a;让每一位开发者的智慧汇聚成全生态创新&#xff0c;共同点亮多样性计算新时代左右滑动查看更多☟

独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!

最近一年的工作&#xff0c;有很大的比重在做云平台的事情&#xff0c;简单来说&#xff0c;就是为公司内用户提供一个PaaS&#xff0c;用户可以在我们的云平台上方便的将单机服务程序扩展为多实例程序&#xff0c;以平台服务化的方式对外提供。在这里简单分享一下。 首先简单说…

C# 使用Timer控件设置时间间隔

Timer 控件可以定期引发事件&#xff0c;该控件是为 Windows 窗体环境设计的。时间间隔的长度由 Interval 属性定义&#xff0c;其值以毫秒为单位。若启用了该组件&#xff0c;则每个时间间隔引发一个 Tick 事件&#xff0c;在该事件中添加要执行的代码。如图1 所示为 Timer 控…

mysql分析工具

今儿上课的时候老师讲到一个mysql的分析工具&#xff0c;我才恍然大悟记起上次去新浪笔试的一道题大概的意思好像就是说&#xff1a;抓出服务器中最耗费时间的sql语句。当时就蒙了根本不懂这些。 MySQL Slow Log 分析工具 mysqldumpslow - mysql官方提供的慢查询日志分析工具my…

编写java的应用_编写Java应用程序

import javax.swing.JOptionPane;public class Account //账户类{private String name; //储户姓名private double balance; //账户余额public Account(String name,double balance){this.name name;this.balance balance;}public String getName() //返回账户名{return name;…

vijos p1347(最大乘积(整数划分?))(25—100分)

跟数的划分有些类似&#xff0c;递归记忆化搜索&#xff0c; 做过数的划分的人做这道题目应该不是很难。 http://www.cnblogs.com/zyxx233/archive/2012/12/08/2809187.html 这是数的划分题解 同样的&#xff0c;我还是以haha来作为函数.....&#xff08;个人癖好&#xff09; …

吐血整理!近二十年全国数学联赛赛题大全,烧脑全集来啦!

1981年&#xff0c;中国数学会开始举办"全国数学联赛"&#xff0c;经过1981、1982、1983三年的实践&#xff0c;这一群众性的数学竞赛活动得到了广大中学师生欢迎&#xff0c;也得到教育行政部门、各级科学技术协会、以及社会各阶层人士的肯定和支持。"试题所涉…

组装电脑教程(转载)

组装电脑已经越来越受欢迎&#xff0c;性价比在那摆着&#xff0c;而之前品牌机引以为傲的售后服务也已经被组装机赶上&#xff0c;可以说已经没有不选组装机的理由&#xff0c;就连王思聪也是买组装电脑&#xff08;几万元土豪组装机&#xff09;。但是组装电脑对于新手却不是…

SAP BW系统日常维护日常工作及常见的Infopackage错误

1. Why there is frequent load failures during extractions? and how they are going to analyse them? If these failures are related to Data,, there might be data inconsistency in source system..though you are handling properly in transfer rules. You can mo…

java基本类型与引用数据类型_java基本数据类型与引用数据类型总结

昨天京东笔试的一道选择题&#xff0c;被坑了。最近一直在做笔试题&#xff0c;发现自己学了两年多的java&#xff0c;三大框架什么都会&#xff0c;却连基本的拆箱装箱都忘了。昨天考的引用数据类型&#xff0c;基本数据类型都不知道。看来得好好把基础复习几遍了。总结&#…

男朋友的内裤旧了不要扔,关键时刻有大用......

1 女生没有运动内衣不用愁翻翻衣柜总有办法▼2 孩子&#xff0c;你这家庭咋这么散装呢&#xff1f;▼3 这个原地打滑的本领也是一门技术▼4 三轮车夫&#xff1a;我顶不住了......▼5 有空不仅可以一起洗澡还可以一起拉屎▼6 哟&#xff01;哥们儿&#xff0c;我来陪你啦…

基于事件驱动架构构建微服务第9部分:处理更新

原文链接&#xff1a;https://logcorner.com/building-microservices-through-event-driven-architecture-part10-handling-updates-and-deletes/在本文中&#xff0c;我将讨论如何处理事件溯源系统上的更新。在前面的步骤中&#xff0c;我将系统的所有业务变化存储为事件&…

将字符串中的大写字母变成小写字母

/*字符串中大写字母变成小写&#xff0c;其余字符不变*/#include <stdio.h> #include <string.h>char* mystrlwr(char *s) {char *scopy s;while (*s) {if (*s > A && *s < Z) {*s *s a - A;}s;}return scopy; }char *mysed_strlwr(char *s) {cha…

理解离散傅立叶变换(一. 傅立叶变换的由来)

转自&#xff1a;http://blog.csdn.net/dznlong/article/details/2261150理解离散傅立叶变换&#xff08;一&#xff09;------傅立叶变换的由来关于傅立叶变换&#xff0c;无论是书本还是在网上可以很容易找到关于傅立叶变换的描述&#xff0c;但是大都是些故弄玄虚的文章&…

浅谈入行

2019独角兽企业重金招聘Python工程师标准>>> 2006年开始参加工作&#xff0c;从编码&#xff0c;到带人&#xff0c;再到设计&#xff0c;自己不知不觉也走过了许多个年头。在公司从外包&#xff0c;到国内前后也参加了十多个不同的项目&#xff0c;每年都会有一些新…

关于java的项目_关于java项目与javaweb项目

有时候在eclipse中导入web项目时&#xff0c;出现转不了项目类型的问题&#xff0c;导入后就是一个java项目。解决步骤&#xff1a;1、进入项目目录&#xff0c;可看到.project文件&#xff0c;打开并找到找到...代码段&#xff1b;在该代码段中加入如下标签内容并保存&#xf…

数学界再出变态神人!竟用一个比基尼方程,暴力吊打美国数学家!看完我惊了......

全世界只有3.14 % 的人关注了爆炸吧知识没时间了快上车&#xff01;最近&#xff0c;有粉丝给超模君发了一些图片。早跟你们要说&#xff0c;要好好学数学。现在好了&#xff0c;连沙发问题都不懂&#xff01;没办法&#xff0c;作为数学界屈指可数的老司机&#xff0c;是时候挺…

Envoy实现.NET架构的网关(四)集成IdentityServer4实现OAuth2认证

.NET网关与Gateway实战-Envoy与kong课程什么是OAuth2认证简单说&#xff0c;OAuth 就是一种授权机制。数据的所有者告诉系统&#xff0c;同意授权第三方应用进入系统&#xff0c;获取这些数据。系统从而产生一个短期的进入令牌&#xff08;token&#xff09;&#xff0c;用来代…

如何通过CCIE实验考试

CCIE全称Cisco Certified Internetwork Expert.既然敢称expert那应该水平不低。&#xff08;当然那个MCSX的也敢说是expert&#xff0c;可惜现在有越来越多的初学者一两个月就搞定了&#xff0c;已经都泛了&#xff09;.Cisco的考试一向比较严谨&#xff08;当然现在CCNA系列&a…

宏在使用过程余函数的区别1

#include<stdio.h>#define MAX(X,Y) ((X)>(Y)?(X):(Y))int max(int x, int y){ return x > y ? x : y;}int main(){ int a 10; int b 20;int ret1 MAX(a, b);//宏会直接把定义的替换过来//((a)>(b)?(a):(b))会进行一系列的运算。此刻算完后a11.b22,ret21i…