C语言新手笔记

新手上路,难免遇到各种各样的问题。本文所收录,就是我遇到的,容易忽视的一些问题。

新手上路,难免遇到各种各样的问题。本文所收录,就是我遇到的,容易忽视的一些问题。

1. 常数不可随便写。

int a=14; 
int b=014; //前导零,是八进制的14
float a=3/2;   //得到1
float b=3/2.0; //得到1.5

2. 不要随便移项……

unsigned int x=4;
if (x > 5)
    puts("x>5");
if (x - 5 > 0)
    puts("x-5>0");
//结果将是,输出 "x-5>0"

注意到 x 的类型是 unsigned,(x-5) 的值还是正数。

3. 多一个分号?

int i, sum;
for(i=0; i<=10; i++);
{
    sum += i;
}
printf("%d", sum);
//输出并不是设想中的55,而是11。

你发现了吗,for 一行后面多写了一个分号。有的编译器会对类似情况给出 warning 曰“空的受控语句”,有的则不会,火眼金睛才能发现问题所在。

4. 搞不懂的自增

int a=2;
a/=a++;
//问此时 a 的值

这绝不是 a++ 和 ++a 的区别那么简单。事实上不同编译器会给出不同结果:gcc 3.4 给出 a==1,Turbo C 3.0 和 VC++ 11.0 则给出 a==2。从汇编码中能看出些端倪,但更深入的研究就需要对编译器的理解了。

这个故事告诉我们,不要随意使用自增(自减)运算符,特别是当被执行自增(自减)的变量在表达式中多次出现的时候。

5. 更多编译器相关的代码

int a=0;
printf("%d %d %d", a++, a++, a++);

新手跨语言:C/VB:VB6写界面,VC11写算法

作为一个新手入门的示例程序,我们用 C 写一个求两数之和(A+B Problem)的函数,然后在 VB 程序中调用它。

作为一个新手入门的示例程序,我们用 C 写一个求两数之和(A+B Problem)的函数,然后在 VB 程序中调用它。

在Visual Studio 2012建立一个Win32项目,名为ProjectName。应用程序类型选择DLL。
然后在ProjectName.cpp中写如下代码。

// ProjectName.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"

#define FUNC(x) extern "C" __declspec(dllexport) x __stdcall 

FUNC(int) SUM_(int x, int y)
{
	return x+y;
}

你可以像写普通的标准C函数一样来写这里的函数,唯一的区别是函数头前面要有一大堆关键字。我在这里使用了宏定义 FUNC(返回值类型) 简化。

extern "C" __declspec(dllexport) int/*你的返回值类型*/ __stdcall SUM_/*你的函数名*/ (int x, int y)/*你的参数列表*/

按F7键,生成ProjectName.dll。

在VB6中,建立一个标准EXE工程,在Form1中写以下代码:

Private Declare Function _
    SUM_ _
    Lib _
    "ProjectName.dll" _
    Alias _
    "_SUM_@8" _
    (ByVal x As Long, ByVal y As Long) _
    As Long

Private Sub Form_Load()
    Dim x As Integer, y As Integer, sum As Integer
    x = InputBox("请输入 x")
    y = InputBox("请输入 y")
    z = SUM_(x, y)
    MsgBox x & " + " & y & " = " & z
End Sub

Lib "ProjectName.dll":指定dll文件。建议在这里使用相对路径,把你的dll和exe放在同一目录下。
Alias "_SUM_@8":需根据C中的函数名手动修改。在__stdcall下,VC编译时会在函数名前面加一个下划线,后面加@和参数的总长度(此处是2个int,即8字节)。
ByVal x As Long:ByVal是不可少的。对应C中4字节的int,VB里是Long。

在“文件”菜单中找“生成”,生成工程1.exe。将工程1.exe和ProjectName.dll放置于同一目录下即可。

I’m back!

时隔三年,重拾写博客的激情。鼓起勇气开起了独立博客。可以自定义整个站点的任何一个细节,不得不说,这种感觉真是太好了。

时隔三年,重拾写博客的激情。鼓起勇气开起了独立博客。可以自定义整个站点的任何一个细节,不得不说,这种感觉真是太好了。

200、404 都是 HTTP 状态码。博客名字 200-404,寓意为:成功地找到了未找到。创意来自 @Shirley 🙂

自豪地采用 WordPress。目前放在 SAE 上。更新 2016-9-26:已从新浪云迁出,目前用 VPS ,来自 Vultr。

欢迎大家来踩~~~~~~~

您可以在以下位置找到我以前的文章:

1. 2011年以前,百度空间。由于百度空间已彻底关闭,您可以参观我保留的备份镜像(仅文章正文)

2. 2011年到2014年,人人网(可能需要登录)

考虑过把以前别的地方写的东西都搬过来。甚至已经在用 PHP 写从百度空间到 WordPress 的搬家工具。中途放弃了,是因为麻烦,也是因为觉得以前写的东西有些确实幼稚。所以嘛,就不搬了。这个博客将是一个新的开始。

It’s a fresh start~