C语法简单测试
1、未初始化的枚举变量
/* uninitialized-enum.c */
#include <stdio.h> enum color{white = , black, blue}; int main(void)
{
enum color bird; printf("bird = %d\n", bird); return ;
}
输出结果:
$ ./uninitialized-enum
bird = 2130567168
$
2、十六进制数与switch语句测试
/* test.cpp */
#include <iostream> using namespace std; enum color{green, yellow, red, blue, black}; int main(void)
{
int i = 0x3e - ; cout << "i = " << i << endl; color bird = blue;
switch(bird){
case green:
break;
case yellow:
break;
cout << "Hello, world!" << endl;
case red:
break;
cout << "Hello, world!" << endl;
case blue:
cout << "Yes, the color of this bird is blue!" << endl;
break;
default:
cout << "No, byebye!" << endl;
break;
} return ;
}
输出结果:
$ ./test
i = 61
Yes, the color of this bird is blue!
$
3、sizeof关键字和处理器的字节序
#include <stdio.h> int main(void)
{
char str[] = { 0x01, 0x00, 0x00, 0x00, 0x04, 0x01, 0x06, 0x00, 0x01, 0x02, 0x03, 0x04, 0x10, 0x10 };
unsigned ret, lid; ret = sizeof str;
printf("ret = %d\n", ret);
lid = *(unsigned *)(str+);
printf("lid = %d\n", lid); return ;
}
备注:Intel Core处理器的字节序是小端序。
输出结果:
$ ./test
ret = 14
lid = 393476 (0x00, 0x06, 0x01, 0x04)
$
4、C语言中的整数
#include <stdio.h> int main(void)
{
int i = , value; if((i << ) == 0x0138)
printf("YES!\n");
else
printf("NO!\n"); value = i + 0x0138;
printf("value = %d\n", value); return ;
}
输出结果:
$ ./test
YES!
value = 390
$
从输出结果可以看出,十进制数据与十六进制数据可以直接进行运算,而不需要经过转换。
另外,C语言中的整数有多种形式,二进制数、八进制数、十进制数、十六进制数、字符('A')都是整数,可以使用任何一种形式,或者在任何形式的整数之间进行整数运算。
5、循环结构、switch结构中的break语句
#include <stdio.h> int main(void)
{
enum color {yellow, green, red, black};
enum color bird = red; while(){ switch(bird){
case yellow:
printf("the bird is yellow!\n");
break;
case green:
printf("the bird is green!\n");
break;
case red:
printf("the bird is red!\n");
break;
default:
printf("the bird is black!\n");
break;
} printf("use a break to get out of while!\n");
break;
} printf("we are now at outside of while loop!\n"); return ;
}
输出结果:
$ ./test
the bird is red!
use a break to get out of while!
we are now at outside of while loop!
$
从输出结果可以看出:switch中的break只对switch结构有用,对更外层的while循环无用;while循环中break语句可以跳出while循环。
因此,我们有如下结论:
1、switch结构并非循环结构,遇到break则不再执行该结构中剩下的语句;
2、break语句可以跳出当前的循环结构(一层)。
6、结构体的存储空间
#include <stdio.h>
typedef struct {
unsigned request;
unsigned len;
unsigned char data[];
}rms_message_t;
int main(void)
{
printf("sizeof(unsigned) = %d\n", sizeof(unsigned));
printf("sizeof(unsigned char) = %d\n", sizeof(unsigned char));
printf("sizeof(rms_message_t) = %d\n", sizeof(rms_message_t));
return ;
}
输出结果:
$ ./test
sizeof(unsigned) = 4
sizeof(unsigned char) = 1
sizeof(rms_message_t) = 8
$
C语法简单测试的更多相关文章
- TODO:Golang UDP连接简单测试慎用Deadline
TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interco ...
- .net orm比较之dapper和Entity Framework6的简单测试比较
.net orm比较之dapper和Entity Framework6的简单测试比较
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(37)-文章发布系统④-百万级数据和千万级数据简单测试 系列目录 我想测试EF在一百万条数据下的显示时间! ...
- ORACLE 数据库简单测试
ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库 非同一个用户的情况,用户是否可以 ...
- Javascript的简单测试环境
在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很好的例子,既让我们得到了一个好用的小工具 ...
- struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)
为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...
- struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)
为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...
- [20190423]简单测试latch nowilling等待模式.txt
[20190423]简单测试latch nowilling等待模式.txt --//我对这个问题的理解就是如果参数willing=0,表示无法获取该latch,直接退出,再寻找类似的latch.--/ ...
- Javascript学习-简单测试环境
Javascript学习-简单测试环境 在<JavaScript忍者秘籍>2.4测试条件基础知识中,作者给出了一个精简版的assert和assert组的实现,对于初学者而言,这无疑是一个很 ...
随机推荐
- VR外包商:最新WEARVR游戏下载
WEARVR每周下载Top10——第二弹 还在为寻找好玩的VR游戏而烦恼吗?我们有来自WEARVRapp市场(一个虚拟现实体验的跨平台仓库)上周下载排行榜前十的游戏. 10. Stunt Kart ...
- SSH应用实战——安全防护(fail2ban)
ssh 安全配置 端口 ssh随机端口范围在 27000-30000,可以手动修改也要改在这个范围内,建议定时修改端口. 密码 登陆密码应包含大小写.数字.特殊字符等 10 位以上,建议定期修改密码. ...
- [转]OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
转自:https://blog.csdn.net/youngkingyj/article/details/23365849 开源与成熟商业的瓦片地图服务(TMS 2 WMTS),都有如下共同的特性 ...
- java反射使用和源码解析
1 反射 1.1 什么是反射 正射:指的是我们知道类的定义和类中的方法名称,直接先创建对象,然后通过对象去调用方法.例如: Apple apple = new A ...
- 2018-2019-2 20165303《网络对抗技术》Exp2 后门原理与实践
实验内容 (1)使用netcat获取主机操作Shell,cron启动 (0.5分) (2)使用socat获取主机操作Shell, 任务计划启动 (0.5分) (3)使用MSF meterpreter( ...
- Apache Hadoop学习笔记一
官网:http://hadoop.apache.org/ 1 什么是Hadoop? Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件. Apache Hadoop软件库是一 ...
- python webdriver api-对启动的火狐浏览器添加配置
Webdriver启用的火狐不带插件,可以自已进行配置 先找到火狐的安装路径 C:\Program Files\Mozilla Firefox 步骤说明 在CMD中使用cd命令进入firefox.ex ...
- ASP.NET MVC 目录介绍
- python--日志模块
一.logging模块就是python里面用来操作日志的模块,logging模块中主要有4个类,分别负责不同的工作 1. Logger 记录器,暴露了应用程序代码能直接使用的接口:简单点说就是一个创建 ...
- Spring IOC、AOP、Transaction、MVC小结
1.IOC.AOP:把对象交给Spring进行管理,通过面向切面编程来实现一些“模板式”的操作,使得程序员解放出来,可以更多的关注业务实现. - ...