C/C++
一块笨笨的木头
保持怀疑,继续批判,看好书,坚持写看书笔记
展开
-
逻辑与(&&) 和 自增(i++)
逻辑与操作 && A && B : 只有 A 和 B 同时为非 0 (真) 时,表达式的值 为 真(非零); && 通常运用与 if() ,while() ,for ()等需要判断真假的地方,他的值只有真和假 两种,需要和 按位与 (&) 区别 。 注意 i++ ,++i 中 i 的增加时机 。 举个例子 C++语言实现 #include <iostream原创 2017-04-07 12:17:52 · 763 阅读 · 0 评论 -
#ifdef Macro_Value 等价于 #if defined (Macro_Value)
在Linux和u-boot源码里面,经常看到 #ifdef 和 #if defined ( ) 的用法:#include <stdio.h>#define hello_worldint main( void ){#if defined ( hello_world ) printf ( "hello world is defined.\n" );#endif #ifdef hello原创 2017-04-04 08:00:12 · 390 阅读 · 0 评论 -
C语言之 volatile 类型修饰符
volatile 类型修饰符 作用: volatile 是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。 volatile 用于对变量修饰,对于C语言编译器而言,告诉编译器,除了当前执行线程外,其他的线程有可能改变内存,所以它的意思是”可变的” ,它告诉编译器不要对变量优化。 例如:int value; : 如果原创 2017-04-05 13:52:56 · 758 阅读 · 0 评论 -
使用宏定义来获取一个结构体成员相对于该结构体首地址的偏移量
目的:获取一个结构体成员相对于该结构首地址的偏移量 C代码如下:#include <stdio.h>#define GET_OFFSET(data,member) (size_t)(&(((typeof(data)*)0)->member))typedef struct student{ int a; char ch[2]; double d;}student_原创 2017-04-05 19:53:22 · 4849 阅读 · 1 评论 -
预处理声明一个常数,用以表明 1 年有多少秒的问题(忽略闰年)
预处理#define 定义 SECONDS_PER_YEAR 计算一年多少秒 C 预处理器定义如下:#include <stdio.h>#define UL (unsigned long)#define SECONDS_PER_YEAR UL( 60 * 60 * 24 * 365 )int main(void){ printf( "%lu\n", SECONDS_PE原创 2017-04-06 20:32:34 · 2631 阅读 · 0 评论 -
用宏定义实现 得到两个数的最值
使用两种宏定义的方法实现 得到两个数的最小值和最值 方法一: 利用三重条件运算符#include <stdio.h>#define MIN(A,B) ( (A) > (B) ? (B) : (A) )#define MAX(A,B) ( (A) > (B) ? (A) : (B) )int main(void){ printf("%d\n",MIN(12,334));原创 2017-04-06 20:51:42 · 7114 阅读 · 1 评论 -
malloc(0)会发生什么?
malloc 用于分配 0 个字节,会发生什么? C++ 语言描述#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;#define aint main(void){ char *ptr ; if ((ptr=(char *)malloc(0))==NULL)原创 2017-04-07 21:47:20 · 897 阅读 · 0 评论 -
关于数组指针取值操作以及printf( )函数参数入栈的顺序
利用数组指针取值,以及printf( ) 参数入栈 C语言实现#include <stdio.h>int main(int argc,char *argv[]){ int arr[] = {6,7,8,9,10}; int *ptr = arr; printf("1: %d\n",*ptr); // *ptr = 6 ——> arr[0] = 6 ;原创 2017-04-07 22:12:01 · 574 阅读 · 0 评论 -
实现可移植的变量所有位设置1 的代码
在不知道处理器字长的情况下,如何变量所有bit 设置 位 1 的状态 different_type_int val = 0xffffffff ? 对么 ? 要是 这个处理器的是16位的怎么办呢? 难道移植的时候要修改成 0xffff ? 用 C ++语言实现#include <iostream>using namespace std;#define aint main(v原创 2017-04-07 22:25:25 · 274 阅读 · 0 评论 -
CPU大小端判定
大小端模式判定方法 C 语言方法实现:#include <stdio.h>#include <stdlib.h>#include <string.h>int Is_Little_mode(void);int main(void){ if(Is_Little_mode()) puts("The CPU is little mode"); else原创 2017-04-07 22:39:44 · 357 阅读 · 0 评论 -
输出某年某月某日某时某分某秒的下一秒的时间:年、月、时、分、秒
利用C++语言实现日期时间增加一秒的结果:#include <iostream>#include <string>using namespace std;int ResetTheTime( int *year, int *month, int *day, int *hour, int *minute, int *second );int main( int argc, char const原创 2017-04-08 09:41:07 · 1548 阅读 · 0 评论 -
程序处理、加工的对象——数据
程序处理、加工的对象——数据 程序设计是用于干什么用的呢? 无非就是对数据进行处理。 当我们从事科研和工程项目时,首先当然是结合领域知识对问题进行分析,而后进行数学建模,最后通过计算机进行处理。 在计算机的世界里,数据代表了对数字模型的抽象化的概念,同时也代表了信息。 结合我们的日常生活,可以想象我们周围充满了各种各样的数据——文字、数字、声音、图片、动画以及更加复杂的多媒原创 2017-04-08 19:13:51 · 3785 阅读 · 0 评论 -
计算机程序中数据类型的内存映像
数据的内存映像 基本数据类型的内存映像: 在计算机,字节(byte)是内存编址的基本单位,每个字节包含8位(bit)。考察一个变量占用了多少内存空间,即看他占用了多少字节。在C/C++中,sizeof(type) 是一个操作符,用于确定类型数据占用的字节大小。 像一些基本的数据类型: char 、short 、 int 、 long 、float 、 double原创 2017-04-08 19:24:25 · 656 阅读 · 0 评论 -
变量的位屏蔽
清楚变量的某位 位的清除在嵌入式领域至关重要,配置寄存器的某些位相当方便 C++语言实现 #include <iostream>#define BIT_MASK(bit_pos) ( 0x1 <<( bit_pos ) )int Bit_Clear(unsigned int *val,unsigned char pos);int main(void){ unsigned in原创 2017-04-09 08:23:23 · 602 阅读 · 0 评论 -
无符号数 0 ( 0 -1 == -1 ?)
无符号数运算 应该注意什么? 一:什么是无符号数 ? 无符号数(unsigned number) 是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。 有符号数(signed number) 和无符号数基本相同,不同的是:一般用最高有效位(MSB)来表示数的符号,正数用0表示,负数用1表示。原创 2017-04-09 09:38:04 · 11702 阅读 · 0 评论 -
确定一个数二进制形式中 1 的个数
如何得出一个数二进制形式的 1 的个数 思考两个问题: 1 . 二进制形式中 1 的个数,需要把十进制转换成二进制麽 ? 根本没必要,数据在计算机中就是以二进制形式存储的,只是我们看到的是十进制而已,我操作十进制实际上就是在操作相应存储空间的二进制位数据。 2. 如何确定二进制形式中 1 的个数 ? 方法 1 . 移位操作:对原创 2017-04-09 16:28:51 · 468 阅读 · 0 评论