2013-04-22 25 views
-1

嘿家伙,所以我有一个char,我想添加一些整数/双向它。字符必须是一个有符号的字符,所以我不能把它作为一个int。在c中为char添加值?

char var = -55; 
printf("Char is %d, add, char is now: %d\n", var, var+2); 

该代码工作,但只要我想添加一个分数或东西...

printf("Char is %d, add, char is now: %d\n", var, var+2/3*2); 

它不会增加的。任何想法为什么?可能与舍入和什么有关。

谢谢。

+7

2/3等于零。 – MYMNeo 2013-04-22 10:05:21

+0

嗯?我应该先掷2/3到第一个? 编辑 - 哈哈,忘了基本BODMAS ..所以是2/3 = 0然后乘以2 = 0. -.-。谢谢! – Travv92 2013-04-22 10:06:41

+1

显式声明'var'为'signed char',或者当您使用不同的编译器时,冒着最终使用'unsigned char'的风险。 – 2013-04-22 10:31:51

回答

1

尝试做

printf("Char is %d, add, char is now: %d\n", var, (int)(var+(2/(double)3)*2)); 
+0

谢谢,这工作! – Travv92 2013-04-22 10:08:09

2

试试这个

printf("Char is %d, add, char is now: %d\n", var, (int)(var+2/3.0*2));