int输出%f浮点值是0,double/float 浮点数%d输出0的原因

输出为:

  • int输出%f浮点值的时候,比如2,2内部表示如果看作是float,是个很小的数所以输出的是0.000000
  • double/float 浮点数按照%d输出,如果输出为0,则说明a的数据放在地址的高端,而整型比浮点数内存中占的字节数少,整型只会把属于它的字节数读出来,如在Win32,VC6.0下,Int是4位,它就会把从a开始的4位读出来(按整型格式),所以它把浮点数低端地址的0给输出出来。
  • 所以说使用printf的时候数据格式一定要对应,或者使用printf("%d", (int)a);这样强制转换的方法输出不同格式的数据

【C/C++】全局变量只能初始化不能赋值

  • C/C++中,全局变量只能声明、初始化,而不能赋值
  • 也就是说,下面这样是不被允许的:

    错误提示是:
  • 声明、初始化与赋值的区别:
    • 声明:int a;
    • 初始化:int a = 2;(在声明的时候顺带赋值叫做初始化)
    • 赋值:a = 2;
  • 只有定义(int a;)才分配存储空间,初始化必须要有存储空间来初始化
  • 全局变量在声明时候顺带赋值(也就是初始化)是可以的,但是如果先声明,不赋值,之后再赋值的话,程序是执行不到这里的,也无法通过编译。

【C++】判断两个vector是否相等~直接用“==”

  • 如果vector里面的元素类型是简单类型(内置类型),可以直接使用“==”或者“!=”进行比较

  • 甚至可以使用“<=” “<” “>=” “>”比较两个vector大小:按照字典序排列

【C++】fill函数,fill与memset函数的区别

  • memset函数
    • 按照字节填充某字符
    • 在头文件<cstring>里面
  • fill函数
    • 按照单元赋值,将一个区间的元素都赋同一个值
    • 在头文件<algorithm>里面
  • 因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能。因为只有00000000 = 0,-1同理,如果我们把每一位都填充“1”,会导致变成填充入“11111111”
  • 而fill函数可以赋值任何,而且使用方法特别简便:
    • fill(arr, arr + n, 要填入的内容);
    • 例如:

    • vector也可以:
  • 而memset的使用方法是:

【C++】用sort函数产生的段错误问题

sort函数的cmp必须按照规定来写,即必须只是 > 或者

比如:
return a b;
return a < b;

而不能是 <= 或者 >= ,(实际上等于号加了也是毫无意义,sort是不稳定的排序),否则可能会出现段错误

C++:string类中size()和length()的区别

此文献给好友风临神上(^-^)

结论是,两者没有任何区别。

解释:

C++ Reference中对于String字符串中函数size和length的解释是这样的:

size Return length of string
length Return length of string

连两者的具体解释都一样:

std::string::size

Return length of string

Returns the length of the string, in terms of bytes.
This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storagecapacity.
Note that string objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. Therefore, the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).
Both string::size and string::length are synonyms and return the same value.

std::string::length

Return length of string

Returns the length of the string, in terms of bytes.
This is the number of actual bytes that conform the contents of the string, which is not necessarily equal to its storagecapacity.
Note that string objects handle bytes without knowledge of the encoding that may eventually be used to encode the characters it contains. Therefore, the value returned may not correspond to the actual number of encoded characters in sequences of multi-byte or variable-length characters (such as UTF-8).
Both string::size and string::length are synonyms and return the exact same value.

所以两者的微小区别就是:

size() 一般用作返回容器大小的方法

length() 一般用作返回一个序列的长度