C-变量&内存

C语言的变量,和JS的变量略有不同,C语言中一般提起变量是特指数据变量,根据数据类型不同,声明方式也不同,整数型有int,short,char;浮点型有float,double。附表:

var

上面的表中有一个sizeof的值,这个值表示该变量类型在内存中占多大字节,一个字节可以放8个0或者1,所以char声明的数值只能在0000 0000 到1111 1111之间,char的第一位是作为符号位出现的,1为负0为正,于是char的范围是-128-127,有负值的。unsigned char的声明第一位不是符号位,就没有负数的概念,范围是0-255。

不论是哪种声明方式声明的变量,他的值都可以从内存中读取到,这个变量就放在内存的这几个字节中,修改变量就是修改内存,读取变量就是读取内存,所以可以用小字节变量的时候就不需要用大的类型,以节省内存。

C-printf & scanf_s

C语言的第二章: printf和 scanf_s,输出与输入。

printf,在我心目中和console.log以及document.write差不多,都是打印用,但printf是有自己的参数的,它使用起来是这样的:printf(“%d+%f”,10,10.2)。

%d 或者 %f 是坑,显示后面的参数的,第一个””,后面出现的就都是参数了,参数之间使用英文逗号隔开。

scanf_s,原来应该是scanf,scanf_s是scanf的安全版,我使用的vs2015已经不支持scanf了。这个参数是让输入的意思,和keydown差不多了。也可以有好几个参数,使用起来是这样的:int a,b; scanf_s(“%d,%d”,&a,&b); 他的参数前面需要“&”,键入参数时需要完整的按照中间的间隔符键入,比如我这里使用了半逗号,就需要输入半逗号,输入其它都会报错。
#include <stdio.h>
int main() {
double float1;
double float2;
printf(“please multiplying two float_num like 1.2*1.2: “);
scanf_s(“%lf*%lf”, &float1,&float2);
printf(“The result of multiplying two numbers is:%f*%f=%.2f”,float1,float2,float1*float2);
return 0;
}

附加其它基础:

%d:十进制整数。
%4d:最小4位宽整数,不足4位宽前面补足空格。
%04d:最小4位宽整数,不足4位宽前面补足0(只能使用0)。
%f:浮点数,保留浮点数后6位。
%lf:
%.2f:浮点数,保留浮点数后2位。
int a=10:声明变量a是类型为数字10。
double a = 12.2123:声明变量a是类型为浮点数12.2123。

C语言中声明变量竟然还需要声明类型,每个类型有不同的声明,心塞塞。
注:scanf_s使用浮点数时,需要用double声明%lf这样的双精度浮点型,使用float声明的%f单精度浮点型就会报错,甚至有可能引起程序崩溃 。

C-hello world

评测结果下来了,专业知识评审建议学习C语言,于是有了今天的博客内容:Hello C。

整理了需要学习的24章学习点。这周完成了第一章:Hello World。

1.开发平台Visual Studio的安装。

2.创建第一个程序。

Visual Studio 是一款IDE工具,可以使用的语言有C,C++,C#,nodeJs,.net,asp,VB等等一大堆,总之挺牛的。我安装的是2015版本,之前装了2017版本但语言难以兼容,总是找不到 <stdio.h>文件。安装时间大约是3小时,需要看网速,因为它是一边下载一边安装,需要最少4个G的硬盘空间。这些在vs官方 before 都有提示的。

so:

#include <stdio.h>

int main(){

printf (“Hello C”);

}

JS-二叉树

想用JS模拟一个二叉树,然而失败了,有大bug,要改动。只能判断2的n次方,code如下:

    $(function(){
        var $arr = [1,2,3,4,5,6,7,8];
        var max_len = $arr.length;
        var obj_arr = [[$arr]];
        var $tag = true;
        while($tag == true){
            var last_arr = obj_arr[obj_arr.length-1];
            var $len = last_arr.length;
            if($len == max_len){
                $tag = false;
                break;
                return;
            }else{
                $tag= true;
            }
            var new_obj_arr = [];
            for(var i =0;i<$len;i++){
                var half_len = Math.floor(last_arr[i].length/2);
                if(half_len !== 0){
                    var new_arr = last_arr[i].splice(0,half_len);
                    new_obj_arr.push(new_arr,last_arr[i]);
                    obj_arr.push(new_obj_arr);
                }
            }
        }
        for(var key in obj_arr){
            document.write(" 
" + obj_arr[key][0]);
        }
    })