strlen的坑

来源:互联网 发布:美辰堂燕窝是假货 知乎 编辑:程序博客网 时间:2024/05/02 23:05

今天看 深入理解操作系统一书,感叹起c的坑之多,因为长期用java没有这些坑,但是长期被jvm保护,不知道底层,心中总是不安,还是下决心学习底层。

strlen返回值size_t,是unsigned int,在用它进行运算时要小心符号隐匿转换问题。


#include "stdafx.h"#include <stdio.h>#include <string.h>int strlonger(char *s, char *t){int a = strlen(s);int b = strlen(t);printf("%d %d \n",a,b);int i = a - b;printf("%d \n",i);return i > 0;}float sum_elements(float a[], unsigned length){int i;float result = 0;for(i=0;i<=length-1;i++)result += a[i];return result;}int main(int argc, char* argv[]){//float a[3] = {1,2,3};//sum_elements(a,0);char a[5] = {'1','2','3'};char b[3] = {'a'};int i = strlonger(b,a);printf("%d\n",i);return 0;}


0 0
原创粉丝点击