小编Pla*_*625的帖子

char数据类型如何与有符号或无符号区分?

我目前正在使用K&R的书 - 第2版学习C.

到目前为止,我已经了解到有3种类型的char数据类型(8位):plain char,默认情况下主要是签名,但可以根据平台进行无符号签名,unsigned char以及signed char.

-1in 的位模式signed char11111111和hex是0xFF.

255in 的位模式unsigned char11111111和hex是0xFF.

那么,两者都是一样的吗?没有符号表示它是签名还是未签名? 我的问题是它是如何彼此区分的?我显然在这里遗漏了什么,但是什么?:-)

对于int(4个字节),有一个类似的例子:

signed int值的值255在位模式中表示为00000000 00000000 00000000 11111111

unsigned int值的值255在位模式中表示为00000000 00000000 00000000 11111111

两者都是一样的.那么,系统如何发现它是int数据类型signed还是unsignedint数据类型?

c

3
推荐指数
1
解决办法
73
查看次数

使用int或char数据类型并使用K&R进行练习 - "C编程语言"一书?

首先,请原谅我提出这个问题,因为已有数十种类似的变体.但是,我不完全确定如果我能正确理解它.所以,请让我解释一下我能理解的内容,如果我错了,请纠正我.

这是K&R书中的一个例子:

    #include <stdio.h>

    main()
    {
1)      int c;

2) 4)   while ((c = getchar()) != EOF)
3)      putchar(c);
    }
Run Code Online (Sandbox Code Playgroud)

所以,我理解上面的程序是这样的:

1)我们宣布cint,而不是char因为使用char的数据类型并不总是正确的操作,它最终会搞砸了.Char数据类型根据系统而有变化,默认情况下可以是signed[-127,+ 127]或unsigned[0,255].此外,EOF并不总是-1默认情况下,因为它也取决于系统和编译器.

  • 1.1)因此,如果我们在系统上默认声明cchar它,signed char那么它仍然会工作但是如果我们输入一个等于ASCII 128及以上的字符,它会搞砸吗?会发生什么? getchar()将返回所选数据类型的最大可能ASCII值的值,127?

  • 1.2)相反,如果我们声明cas char并默认是unsigned char在系统上,那么无论如何getchar()总是等于EOF因为我们不能存储负值,对吧?

因为上面的所有变化都正确地声明cint避免可能的冲突?

2)我们输入一些字符作为输入c = getchar() …

c

1
推荐指数
1
解决办法
184
查看次数

SQL Server 2008 R2中的存储过程连续几天?

当有人登录他的帐户时,我在存储过程中有以下行:

UPDATE AcccountsTable SET LogDate = getdate() WHERE AccID = @identity
Run Code Online (Sandbox Code Playgroud)

但是,我想在每个连续登录日添加一个新功能,以添加+1到我的新列(ConsecutiveDays)中AccountsTable.

例如:

Day 1: 2018-04-11 20:00
Day 2: 2018-04-12 15:30
Day 3: 2018-04-13 10:20
and etc ....
Run Code Online (Sandbox Code Playgroud)

对于在连续几天内记录的用户帐户ID,连续总天数应为3天.

如果用户未登录day 4- 2018-04-14但在第二天登录,2018-04-15则应将所有连续日期还原为1.

我在MSSQL Server 2008 R2上搜索了类似的存储过程解决方案但没有成功.我根本不擅长SQL,所以我非常感谢你的帮助!先感谢您!

sql-server stored-procedures sql-server-2008

0
推荐指数
1
解决办法
66
查看次数