And... sorry... I made a little mistake... To emulate && with the binary logical operator & you need to transform the values in both variables to boolean (0 or 1), like this:
x += ( !!x & !!b );...
Type: Posts; User: flp1969
And... sorry... I made a little mistake... To emulate && with the binary logical operator & you need to transform the values in both variables to boolean (0 or 1), like this:
x += ( !!x & !!b );...
Always a good idea to give a hand to the compiler, but be aware that it's not granted that a C jumpless code is compiled to a binary jumpless one...
Usually, when using optimizations, the compiler...
Just another tip... notice that there are BOOLEAN operators and BINARY operators for logical operations... The expression above could be writen as:
x += ( x && boolvar );
Take a look at OpenCL.
Vague? ISO defines the result of boolean expressions to be 0 (false) or 1 (true). But for testing boolean values, 0 is false and non-zero, true.
I would use
#define FALSE 0
#define TRUE 1
...
When data on a stream cannot be converted it stays in the stream buffer. When you type 'bob' scanf() will return 0 and "bob\n" will stay in the stdin's buffer... the latter scanf() will read 1 char...
Trying to explain the declaration... This:
unsigned int func( void *p );
Is a function named func which returns an unsigned int and takes a pointer to void as argument, right?
This:
...
Not an anomaly... Someone shown me this and I got directly to ISO standard (C99) and it is there... It's a valid expression.
Does nothing really (except create that annonymous automatic object) --...
I was amazed to learn that this works:
(int){ 0 } = 1;
Incomplete array declarations can be "incomplete" only in the "first" dimension. The reason is this: Suppose you have an array like yours:
int arr[421][69];
To access the element arr[i][j] the...
I strongly recommend to avoid using system() in any project. And I think Salem is right saying this is better suited to a script/batch file. Just as an exercise here's my implementation using...
This happens because VLAs don't have a known constant length (ISO 9899 6.2.5 § 23). The compiler don't know the size of the array (even if you use a pre initialized size through a 'const' variable)...
English and a picture:
After initializing a, arr and p you have:
16296
*arr[1] will give you 2, since p points after the last element of a, p[2-5] will give you p[-3]. This gives you 2 also.
snprintf() [and vsnprintf()] don't return the number of chars printed (as printf() do), but the number that would be printed. For example:
int size;
char buffer[10];
size = snprintf( buffer,...
And, in other architetures besides Intel (like ARM) these functions are different. Here the 3 isCrossing() in ARM Cortex-A53 using vfp3-d16:
isCrossing:
ldm r0, {r0, r3}
lsr r3, r3, #31
...
The second tip is ok (droping a !), but the third is a little bit different, since uses two floating point comparisons.
Notice signbit simply isolates the sign bit without any comparison... The...
NOT a correction, just a little bit of improvement. Instead of:
bool isCrossing(float *pair) {
return pair[0] < 0 && pair[1] >= 0 ||
pair[0] > 0 && pair[1] <= 0;
}
Well......
leopoldo100, when you say "very simple" it means from a user point of view. Video players aren't "simple", even when using some library (like ffmpeg's libav*).
Yep... Try to compile the same code for i386 (or x86, as you called) and you'll get:
section .text
_multiplyByTwo:
fld QWORD [esp+4]
fadd st, st(0)
ret
section .rdata
Unless you are compiling your code without any optimizations enabled, the compiler will use the stack to store local variables only if needed. In general, for optimized code, the compiler uses...
Notice you can use getline() [POSIX] to get a line of any size (dynamically allocated), strtok() to isolate "pieces" of the line and strtoul() to try to convert strings from octal to unsigned long...
Another small thing... In the comments you said:
"Write a function that reads data from standard input until EOF is found and returns the sum of the base-8 numbers found into the input."
So,...
XOR has 3 basic uses: To invert bits based in a mask; To get the result of different bits in both operands or as a caryless add.
This kind of code is a trick to swap values without using a temporary...
UNICODE encoding is a 31 bits value corresponding to a single character. The trailing 16 bits correspond to a character in a "plane" the upper 16 bits. Actually planes 0, 1, 2, 3, 14, 15 and 16 are...
Easier if you check only if the next value is greater than the previous (or vice-versa).