~Make Memories Last Forever~

Unix/Linux

cmus - C* Music Player

官网:cmus 介绍: cmus 是一个适用于类Unix系统的简单高效的命令行音乐播放器。 截图: 功能: Features 文档: man cmus man cmus-remote man cmus-tutorial Github: cmus 个人推荐: 界面美观, 操作起来也很方便 不复杂。 同时,官方的Tutorial也很简洁明了, 可以很快的上手。 如果想要更全面地了解和使用cmus, 可以参考man cmus和man cmus-remote。 在Mac OS X下, 搭配着Alfred的Workflows可以更完美地使用cmus, 尤其是用cmus的远程命令来对播放器的动作进行控制。 在Linux下, 搭配着一些桌面管理程序(比如awesome window manager), 也同样有这跟前者一样好的效果和实用性。

  • wzd
    wzd
c

学习C第二章类型、运算符和表达式6: 关系和逻辑运算符

关系运算符(relational operators)有: = < <= 它们有着相同的优先权(precedence)。 优先权仅次于它们(小于它们)的是相等运算符(equality operators): == != 关系运算符的优先权较算术运算符要低, 所以表达式, 如i<lim-1等同于i<(lim-1)。 涉及到逻辑运算符&&和||的表达式从左到右求值, 只要结果的真假已知, 那么求值就结束。 比如&&运算符中: (3<2) && (2>4), 前者3<2求值结果为: false; 那么后面的(

  • wzd
    wzd
c

学习C第二章类型、运算符和表达式4: 声明

所有的变量在使用前都要被定义(declared)。 定义指定了类型(type),并且包括了一系列的(一个或多个)该类型的变量, 比如: int lower, upper, step; char c, line[1000]; 变量也可以在声明的同时初始化。 如下所示, 变量名后面紧跟着等号和对应的表达式: char esc = '\\'; int i = 0; int limit = MAXLINE + 1; float eps = 1.0e-5; 修饰词const可以和变量的声明结合使用, 使得变量的值不能再被改变。 对于一个数组, const修饰词表示其元素不能再被改变了。 const double

  • wzd
    wzd
c

学习C第二章类型、运算符和表达式3: 常数

整数(integer)常数(constant)1234是一个int。 long常数是在末尾以l或者L结尾, 比如123456789L; 一个整数如果大到不能适配int, 那么会被当做long来处理。 无符号(unsigned)常数是以u或者U作为结尾, ul或UL表示unsigned long。 浮点(floating-point)常数包含了小数点(decimal point)(123.4) 或者 指数(exponent)(1e-2) 或者 两者兼有; 在没有后缀(suffix)指定说明的情况下, 它们的类型是属于double的。 后缀f或者F指的是float常数; 而l或L则表示long double。 整数的值还可以指定用八进制(octal)或十六进制(hexadecimal)来表示, 而不必一定要十进制(decimal)。 在一个整数常数中0打头表示八进制; 而如果是0x或者0X打头的话则表示十六进制。 比如,

  • wzd
    wzd
c

学习C第二章类型、运算符和表达式2: 数据类型和大小

2.2学习C第二章类型、运算符和表达式2: 数据类型和大小 在C语言当中, 只有以下几种基本的数据类型(data types): Type Description char a single type, capatable of holding one character in the local character set. int an integer, typically reflecting the natural size of integers on the host machine. float single-precision floating point. double double-precision

  • wzd
    wzd
c

学习C第二章类型、运算符和表达式1: 变量名

第二章前言 变量(Variables)和常量(constants)是程序中基本的数据处理对象。 声明(Declarations)列举了那些会被用到的变量, 同时也声明了这些变量所含有的类型(type)以及可能持有的初始值。 运算符(Operators)指定了作用于这些变量上的运算。表达式(Expressions)与变量和常量相结合去得到新值。 一个对象的类型决定了其值域以及能够作用在其身上的运算。 ASCI标准对于基本的类型和表达做了很多细微的改动和增添。 现在对于所有的整数(integer)类型有了*有符号的(signed)和无符号的(unsigned)*两种形式, 对于无符号的(unsigned)以及十六进制的(hexadecimal)常量有了记号。 浮点运算(Floating-point operations)可在单精度的情况下来完成; 此外, 还有long double类型以供更高的精度。 字符常量可在编译(compile)时连起来。 枚举(

  • wzd
    wzd
c

学习C第一章入门篇10: 外部变量和作用域

在函数(function)中所声明的变量对于该函数是私有(private)的或者局部(local)的, 其它函数不能直接访问它们。 每一个在函数中的局部变量从该函数被调用起开始存在;当该函数结束退出(exit)的时候, 这些局部变量也随之消失。 这也是为什么这些变量在其它语言当中的术语叫做: 自动(automatic)变量。 除了自动变量外, 我们还有一个选择, 就是将变量定义为对于所有函数而言一个外部(external)的存在(在函数外部定义的外部变量)。 也就是说, 这样定义变量之后, 这些外部变量能通过调用变量名的方式来被其它任意函数访问。 同时, 与局部变量不同的是, 外部变量是永久存在的, 不像局部变量一样只存在于所在(局部变量被定义)函数被调用起至结束退出期间。 一个外部(external)变量必须在任意函数外部被定义(defined)一次(有且只有一次), 以求为其分配存储空间。 而每一个想访问这些外部变量的函数必须在其内部声明(declare)所需要访问的外部变量。(这也声明(state)

  • wzd
    wzd
c

学习C第一章入门篇9: 字符数组

这一小节我就简单关注一下 字符数组的一个小细节。 比如, 当我们有一个字符串, “hello\n”, 显示在一个C程序当中。 事实上, 这是以字符数组“hello\n\0”的形式存储的。 (\0是空(null)字符, 其值为0)(\0在这里用来作标记结尾之用) 书后练习题1-17: Write a program to print all input lines that are longer than 80 characters. 我写的版本: #include <stdio.h> #define MAX 1000 int getline_

  • wzd
    wzd
c

学习C第一章入门篇8: 传值参数

在C语言当中, 所有的函数(function)参数(arguments)是以“传值(by value)”的方式来传送的。 这意味着传递给被调用函数的参数值是存储在临时变量当中的而不是原变量。 这使得其与一些以“传址调用(call by reference)”的语言有着特性上的差异(在这些传址调用的程序中, 被调用的程序能直接访问原变量, 而不是和传值调用一样 采用临时变量来存储变量的数据)。 最主要的区别在于, 在C语言当中, 被调用的函数(called function)不能直接更改调用函数(calling function)当中的变量; 它只能更改属于它自己的临时变量(传值参数)。 当然, 有必要的话, 我们还是可以让函数可以变更它的参数变量的。 前提是: 调用者必须提供对应变量的地址(address)(严格来说, 是一个指向该变量的指针(pointer)), 同时被调用的函数也要声明该参数为指针, 然后被调用的函数就能通过这样的方式间接地访问原变量了。 不过,

  • wzd
    wzd