wzd's Picture

wzd

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), 也同样有这跟前者一样好的效果和实用性。…
Continue Read

UNIX Tutorial for Beginners

UNIX Tutorial for Beginners UNIX Tutorial for Beginners X. Tutorial Source 0. Introduction to the UNIX Operating System 0.1 What is UNIX? 0.2 Types of UNIX 0.3 The UNIX operating system The kernel The shell 0.4 Files and processes 0.5 The Directory Structure 0.5 Starting an UNIX terminal 1. Tutorial One 1.1 Listing…
Continue Read

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

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

学习C第二章类型、运算符和表达式5: 算术运算符

二元运算符有 +, -, *, /, 取余操作符%。 %运算符不能用在float和double上面。 二元运算符+和-有着一样的优先权(precedence), 而运算符*, / 还有%的优先权比前者要高, 另外一元运算符+和-的优先权要高于前两者。 参考: 《The C Programming Language》- Chapter 2.5…
Continue Read

学习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 e = 2.71828182845905; const char msg[] = "warning: "; const修饰词还可以和数组参数一起结合使用, 表明函数不能改变数组: int strlen(const char[]); 参考:…
Continue Read

学习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打头的话则表示十六进制。 比如, 十进制下的31可以写作用八进制来表示的037或者用十六进制下来表示的0x1f或者0X1F。 八进制和十六进制常数后面仍然可加上L来表示long以及U来表示unsigned: 0XFUL表示的是一个无符号的long*常数, 其值用十进制来表示的话是15。 字符(character)常数是整数, 其写法是'X'(所代表的字符通过单引号括起来)。 字符常数的值等于其表达的字符在机器字符表中的值。 比如, 在ASCII字符表中, 字符常数'0'的值是48。 特定的字符可以通过转义字符来表示, 如\…
Continue Read

学习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 floating point. 此外, 还有些适用于这些基本数据类型的修饰词(qualifier)。 short 和 long 用于整数类型(integers): short int sh; long int counter;…
Continue Read

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

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

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

在函数(function)中所声明的变量对于该函数是私有(private)的或者局部(local)的, 其它函数不能直接访问它们。 每一个在函数中的局部变量从该函数被调用起开始存在;当该函数结束退出(exit)的时候, 这些局部变量也随之消失。 这也是为什么这些变量在其它语言当中的术语叫做: 自动(automatic)变量。 除了自动变量外, 我们还有一个选择, 就是将变量定义为对于所有函数而言一个外部(external)的存在(在函数外部定义的外部变量)。 也就是说, 这样定义变量之后, 这些外部变量能通过调用变量名的方式来被其它任意函数访问。 同时, 与局部变量不同的是, 外部变量是永久存在的, 不像局部变量一样只存在于所在(局部变量被定义)函数被调用起至结束退出期间。 一个外部(external)变量必须在任意函数外部被定义(defined)一次(有且只有一次), 以求为其分配存储空间。 而每一个想访问这些外部变量的函数必须在其内部声明(declare)所需要访问的外部变量。(这也声明(state)了相应变量对应的变量类型)。 这个声明(declaration)可以是明确地用extern来声明, 也可以是有时根据所处的环境不必用extern来特别声明了。 在书中, 给出的例子缩略后如下: #include <stdio.h> #define MAXLINE 1000 int…
Continue Read

学习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_alt(char[], int); int main() { int counter; char line[MAX]; counter = 0; while ((counter =…
Continue Read